我有一个规范告诉我,我需要将变量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
表现得像这样?我认为列表可以包含任何长度的字符向量?
答案 0 :(得分:3)
lists
可以按照您的意愿行事,但是您被[
/ [[
陷阱(或更具体地说是[<-
/ [[<-
陷阱捕获
使用[[
提取(和[[<-
追加或替换列表中的单个元素
使用[
提取并[<-
追加或替换列表中的多个元素
在您的情况下,您尝试分配给单个元素C[[1]]
所以
C[[1]] <- vector
如果您想在这种情况下使用[<-
进行分配,我建议不要这样做。
如果您确实想要这样做,可以传递list
(因为[<
需要列表,因为C
是一个列表)
C[1] <- list(vector)