当原始元素是长度为2的数字向量时,我可以覆盖R语言中列表的元素吗?
l <- list(a=c(3,5),b=2,c=3) # OK, CREATED a list s.t. element 'a' is a 2-length vector
l['b'] <- 8 # OK, overrided a named element 'b' of the list with a 1-length vector.
l['a'] <- c(4,5) # "Warning" emitted
(l) # BAD
它会发出警告。更糟糕的是,列表未使用新值更新。需要一些解决方法来更新预先存在的列表的2长度向量元素。可能会再次执行一个全新的列表构造函数 - 避免重写元素 - 如果很明显如何编写代码。我还不知道如何在R中编写代码。
这是R版本3.2.2(2015-08-14) - “消防安全” 版权所有(C)2015 R统计计算基金会 平台:x86_64-pc-linux-gnu(64位)
答案 0 :(得分:3)
使用此:
PlaintextCorpusReader
答案归功于Sam Dickson。
答案 1 :(得分:2)
实际上,你原来的答案可能不太遥远!
尝试l['a'] <- list(c(4,5))
您只需将替换格式化为列表即可。当您像['a']
这样的子集时,会返回一个列表;当你将[['a']]
作为子集时, 中的将返回该列表的第a个元素(在本例中为长度为2的向量)。这就是你遇到麻烦的原因。您提供的长度为2,长度为1,包含长度为2的东西。
此外,如果您喜欢自己的答案,那么当您的列表被命名时,您也可以使用l$a
。就个人而言,我更喜欢你的方法(尽管它不那么紧凑,我喜欢它与其他类似物体的子集一致......当我们看起来相同时,我更容易捕捉到子集动作。)
修改:只是为了可视化,请注意列表的a
元素原来是c(3,5)
:
> l['a'] <- list(c(4,5)) # works!!!
> l
$a
[1] 4 5
$b
[1] 2
$c
[1] 3