R按名称字符串从列表中选择元素

New*_*ave 7 r

我有一份清单

myList=list(a=1,b=2)
> names(myList)
[1] "a" "b" 
Run Code Online (Sandbox Code Playgroud)

我想通过字符串名称从myList中选择元素.

for (name in names(myList)){
     print (myList$name)
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为name ="a","b".我的选择行实际上说myList $"a"和myList $"b".我也尝试过:

print (myList$get(name))
print (get(paste(myList$,name,sep="")))
Run Code Online (Sandbox Code Playgroud)

但没有奏效.非常感谢你能告诉我怎么做.

fhl*_*ood 6

$精确和部分匹配,myList$name相当于

`$`(myList, name)
Run Code Online (Sandbox Code Playgroud)

正如@Frank指出的那样,第二个参数name不会被评估,而是被视为文字字符串.尝试?`$`查看该文档.

在你的例子中.myList$name将尝试寻找name元素myList

这就是你需要的原因 myList[[name]]

  • 我认为"完全匹配"可能不是一个完整的解释.事实上,`$`支持*部分匹配*.关键是`$`不会评估它的第二个参数(右侧出现的部分).顺便说一句,为了逃避反引号,你可以使用反斜杠或将代码摘录嵌套在一些额外的`\``中(虽然我不确定需要多少). (2认同)