0

我有一个规范告诉我,我需要将变量C作为一个列表,其中的元素是字符向量。

所以,我尝试了

C = list()
vector = c("dsdas", "dsadsda", "dsdasdasdasdada")
C[1] = vector

然后我得到warning : number of items to replace is not a multiple of replacement length

但请注意,C在索引 1 处仅包含 1 个元素,即"dsdas"

但是,这将起作用。

C = list()
vector = list(c("dsdas", "dsadsda", "dsdasdasdasdada"))
C[1] = vector

如果我的规范说我需要一个字符向量而不是一个列表,我有什么选择,为什么会有这样的C行为?我认为一个列表可以包含任何长度的字符向量?

4

1 回答 1

3

lists可以按照你的意愿行事,但是你被[/[[陷阱(或者更具体地说[<-/[[<-陷阱。

用于[[提取(以及[[<-追加或替换列表中的单个元素)

用于[提取和[<-追加或替换列表中的多个元素

在您的情况下,您正在尝试分配给单个元素C[[1]]

所以

C[[1]] <- vector

如果你想[<- 在这种情况下分配使用,我建议不要这样做。

如果你真的觉得你想这样做,你可以传递一个list(正如[<预期的那样,因为C是一个列表)

C[1] <- list(vector)
于 2013-04-08T04:50:40.927 回答