我正在尝试使用“by”调用的输出,它很容易转换为列表...但有时列表仍然让我无法接受
a = list('1'=c(19,3,4,5), '4'=c(3,5,3,2,1,6), '8'=c(1,3))
for (i in c(1,8,4)){
# would like to do something like this
a[["i"]] # calling list elements by name rather than #
}
#ideally the output would be something like this
>19,3,4,5
>1,3
>3,5,3,2,1,6
最佳答案
列表名称必须是字符串;他们不能是数字。您需要将 i
转换为字符串。您可以使用 as.character
或 paste
,您可以在循环开始时或循环内部执行此操作。
a = list('1'=c(19,3,4,5), '4'=c(3,5,3,2,1,6), '8'=c(1,3))
# convert inside loop
for (i in c(1,8,4)) {
print(a[[as.character(i)]])
}
# convert at initiation
for (i in as.character(c(1,8,4))) {
print(a[[i]])
}
https://stackoverflow.com/questions/10389164/