【问题标题】:Select list element programmatically using name stored as string [duplicate]使用存储为字符串的名称以编程方式选择列表元素[重复]
【发布时间】:2016-07-17 11:45:03
【问题描述】:

我有一个清单

myList = list(a = 1, b = 2)
names(myList)
# [1] "a" "b" 

我想通过存储在字符串中的名称从“myList”中选择元素。

for (name in names(myList)){
     print (myList$name)
}

这不起作用,因为 name = "a", "b"。我的选择线实际上是 myList$"a"myList$"b"。我也试过了:

print(myList$get(name))
print(get(paste(myList$, name, sep = "")))

但是没有用。非常感谢你能告诉我怎么做。

【问题讨论】:

  • 试试myList[[name]]。此外,print 需要 R 中的括号,例如 print(x) 而不是 print x
  • 试试myList[[name]]
  • 非常感谢!
  • paste(myList$, name, sep = "") 不是有效的 R 语法。您需要引用所有非变量元素。

标签: r list subset


【解决方案1】:

$ 进行完全匹配和部分匹配,myList$name 相当于

`$`(myList, name)

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

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

这就是为什么你需要myList[[name]]

【讨论】:

  • 我认为“完全匹配”可能不是一个完整的解释。事实上,$ 支持部分匹配。关键是$ 没有评估它的第二个参数(出现在右侧的部分)。顺便说一句,要转义反引号,您可以使用反斜杠或将代码摘录嵌套在一些额外的 `s 中(尽管我不确定需要多少)。
  • @Frank 很高兴知道这一点!谢谢楼主!
【解决方案2】:

我想你想要这样的东西:

for (name in names(myList)) {
   print(myList[[name]]) 
}

【讨论】:

    猜你喜欢
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 2022-11-04
    • 2013-09-29
    • 2014-03-22
    • 2021-01-19
    相关资源
    最近更新 更多