4

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]))
}
4

4 に答える 4

3

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)
于 2013-09-02T12:23:03.513 に答える
2

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
于 2013-09-02T12:12:41.597 に答える