我需要访问列表中列表的每个元素。我们说我的名单是:
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
依旧...... 如何打印内部人员列表的每个元素? 感谢。
答案 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)
}
}
很可能是您需要的正确版本。