r-访问列表列表

时间:2015-01-22 20:04:08

标签: r list

我需要访问列表中列表的每个元素。我们说我的名单是:

improve<-c('30/0', '60/0', '60/30', '90/60', '90/30', '90/0')
maintein<-c('0/0', '30/30', '60/60', '90/90')
worsen<-c('0/30', '30/60', '60/90', '60/NA', '90/NA')

我的最终名单是:

lista<-list(improve, maintein, worsen)

我需要对每个元素做点什么:

for (k in lista) {
 print(k)
  for (i in lista[k]) {
     print(i)
   }
}

但我得到了NULL:

[1] "30/0"  "60/0"  "60/30" "90/60" "90/30" "90/0" 
NULL
NULL
NULL
NULL
NULL
NULL
[1] "0/0"   "30/30" "60/60" "90/90"
NULL
NULL
NULL
NULL

依旧......  如何打印内部人员列表的每个元素? 感谢。

2 个答案:

答案 0 :(得分:2)

一种方式:

for (k in seq_along(lista) ) {  # safer than 1:length(lista)
 print(k)
  for (i in lista[[k]]) {
     print(i)
   }
}

或者:

> for (k in seq_along(lista) ) {
+  print(k)
+   for (i in seq_along( lista[[k]] ) ) {
+      print(lista[[k]][i])
+    }
+ }
[1] 1
[1] "30/0"
[1] "60/0"
[1] "60/30"
[1] "90/60"
[1] "90/30"
[1] "90/0"
[1] 2
[1] "0/0"
[1] "30/30"
[1] "60/60"
[1] "90/90"
[1] 3
[1] "0/30"
[1] "30/60"
[1] "60/90"
[1] "60/NA"
[1] "90/NA"

答案 1 :(得分:1)

请注意:

for (k in lista) {
 print(k)
  for (i in lista[k]) {
     print(i)
   }
}

循环变量k是一个向量,因为你在lista上迭代,它是一个向量列表。

所以改为:

for (k in lista) {
 print(k)
  for (i in k) {
     print(i)
   }
}

很可能是您需要的正确版本。