这只花了我两个小时的调试来确定:
> list1 = list() # empty list
> list1['first'] = list(a=list(a1='goat', a2='horse'), b=42) # double-nested
> print(list1$first$b)
NULL # Should be 42?
> print(list1) # let's check the actual contents of list1
$first
$first$a1 # how did the contents of the innermost a-list end up here?
[1] "goat"
$first$a2
[1] "horse"
在这种情况下,分配给'first'
的列表将成为a
中的列表,因此b
会在没有警告的情况下消失。这里发生了什么,b
值在哪里?
我使用的是R 3.0.2。当R阻止我做上述事情时,我怎么能这样做呢?
答案 0 :(得分:0)
正如joran在评论中指出的那样,解决方案是在作业中使用双括号:
list1[['first']] = list(a=list(a1='goat', a2='horse'), b=42)
如果您使用单括号,显然您会在较新的R版本中收到警告,但在旧版本中则不会收到警告。