0

在 R 中使用列表似乎很棘手。我不知道引用名称第一部分相同的列表元素是不明确的:

opts = list()
opts$value = NULL
opts$valueDefault = c(1,2,3)

print(opts)                # note: displaying the whole list does not reveal 
                           # the element "value"
$valueDefault
[1] 1 2 3 



print(opts$value)          # with this notation I do not get the correct (intended) 
                           # result
[1] 1 2 3

print(opts[["value"]])     # with this notation I do
NULL
4

2 回答 2

3

请注意,将列表元素设置为 NULL 与将其从列表中删除相同。那时您的列表实际上只包含一个名为 valueDefault 的元素。尝试将 value 设置为 NA 以查看差异。

阅读?"$"将提供更多关于此的信息。$简要总结一下 - 引用 via和 via之间的一个区别[[$会进行部分匹配。因此,由于您的列表仅包含 valueDefault,并且您opts$value说它意识到您必须引用 valueDefault。opts[["value"]]不尝试进行部分匹配(默认情况下)

于 2013-09-02T16:42:08.007 回答
1

如果你想要一个列表元素NULL,你必须用 . 创建一个列表NULL

opts <- list(value = NULL)

> opts
$value
NULL
于 2013-09-02T16:42:34.983 回答