R列表和向量困境

时间:2013-04-08 04:30:59

标签: r

我有一个规范告诉我,我需要将变量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表现得像这样?我认为列表可以包含任何长度的字符向量?

1 个答案:

答案 0 :(得分:3)

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

使用[[提取(和[[<-追加或替换列表中的单个元素

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

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

所以

C[[1]] <- vector

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

如果您确实想要这样做,可以传递list(因为[<需要列表,因为C是一个列表)

C[1] <- list(vector)