在R中循环变量作为元素名?
这是我在其他语言中遇到的一个问题,但目前我正在处理R。例如,如果您有一个包含3个名为“a”、“b”和“c”的其他列表的列表,是否有方法遍历在R中循环变量作为元素名?,r,R,这是我在其他语言中遇到的一个问题,但目前我正在处理R。例如,如果您有一个包含3个名为“a”、“b”和“c”的其他列表的列表,是否有方法遍历列表(“a”、“b”、“c”),并使用迭代变量作为第一个列表元素的名称 testlist = list("a"=list(1,2,3),"b"=list(4,5,6),"c"=list(7,8,9)) for (i in c("a","b","c")){ print(testlist$i) } 而不是 print(testlist$a) print(te
列表(“a”、“b”、“c”)
,并使用迭代变量作为第一个列表元素的名称
testlist = list("a"=list(1,2,3),"b"=list(4,5,6),"c"=list(7,8,9))
for (i in c("a","b","c")){
print(testlist$i)
}
而不是
print(testlist$a)
print(testlist$b)
print(testlist$c)
我尝试将转换为.name(I)
等,但在eval(expr、envir、enclose)中出现错误:尝试应用非函数
谢谢,Base R:
lapply(testlist, print)
第二个选项有更大的扩展空间,即purr
包
library(purrr)
walk(testlist, print)
walk
特别让您可以在不需要返回任何内容的地方创建图形、打印或保存输出。更一般地说,返回输出的主要功能是map
,但该软件包做得更多:它有一些选项,可以让您引用a
、b
、和c
标签(imap
),应用一个从两个不同列表(map2
)获取输入的功能,等等。使用相同的示例,您可以
testlist = list("a"=list(1,2,3),"b"=list(4,5,6),"c"=list(7,8,9))
for (i in c("a","b","c")){
print(testlist[[i]])
}
我知道你可以迭代列表的索引,但我想知道是否有任何方法可以专门迭代索引的名称?我不确定我是否理解你的意思。在上面的示例中,i
等于索引的名称(“a”、“b”或“c”)。您可以选择一个元素作为testlist[[1]]
或testlist[[“a”]]
。我是不是误解了你的意图?