R中的等效方式是什么
foreach ($arr as $key => $value) {
echo "Key: $key; Value: $value<br />\n";
}
这意味着
arr<-c(a=1,b=2,c=3)
key<-names(arr)
val<-arr
for(i in 1:length(arr)){
print(paste(key[i],val[i]))
}
假设var
是一个键值对列表,可以使用以下代码段实现更通用的 foreach 循环:
for(key in names(var)){
value<-var[key]
print(paste(key,'=',value))
}
使用foreach你可以写:
foreach(key=names(arr), val=arr) %do% print(paste(key,val))
您可以定义自己的forkeyval
功能:
forkeyval = function(arr, .combine=function(...){NULL}, ...) {
foreach(key=names(arr), val=arr, .combine=.combine, ...) }
这让你写:
forkeyval(arr) %do% print(paste(key,val)
R 喜欢将事物向量化。你可以做:
sprintf("Key: %s; Value: %s", names(arr), arr)
# [1] "Key: a; Value: 1" "Key: b; Value: 2" "Key: c; Value: 3"
或者为了更好的输出,将其通过cat
:
cat(sprintf("Key: %s; Value: %s", names(arr), arr), sep = "\n")
# Key: a; Value: 1
# Key: b; Value: 2
# Key: c; Value: 3
你也可以使用kv()
来自kv包的。它的重量非常轻,与基本的 R 语法相差甚远。
for( . in kv(arr) ) {
cat( "Key:", .$k, "Value:", .$v, "<br />\n" )
}
披露:我写了kv。