在R中循环变量作为元素名?

在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

这是我在其他语言中遇到的一个问题,但目前我正在处理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(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”]]
。我是不是误解了你的意图?