r- 访问列表列表

r- access to lists of lists

我需要访问列表中列表的每个元素。假设我的列表是:

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

等等... 我该如何打印内幕名单的每个元素? 谢谢

这里注意:

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

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

一种方式:

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"