我想创建一个包含2列的空数据框,名为" ngrams"和" pred"。
df <- data.frame(nGrams=character(), pred = character(), stringsAsFactors=FALSE)
我需要列中的每个元素&#34; pred&#34;是一个单词的向量,但如果我初始化&#39; pred = list()&#39;数据框不会添加该列。
我试过
> pred
[1] "a" "the" "not" "that" "to" "an"
df[nrow(df)+1, ] <- c("is", pred)
Error in matrix(value, n, p) :
(converted from warning) data length [7] is not a sub-multiple or multiple of the number of columns [2]
df[nrow(df)+1, ] <- c("the", list(pred))
Error in `[<-.data.frame`(`*tmp*`, nrow(df) + 1, , value = list("the", :
(converted from warning) replacement element 2 has 6 rows to replace 1 rows
有人能告诉我这是怎样的正确方法吗?提前谢谢。
修改
我使用data.table
获得了解决方案dt <- data.table(nGrams = my_ngrams, pred = list_pred)
其中list_pred是列表列表。但了解数据框架的正确方法仍然很好。
答案 0 :(得分:0)
你可以尝试
d1 <- data.frame(nGrams='the', pred=I(list(pred)))
str(d1)
#'data.frame': 1 obs. of 2 variables:
#$ nGrams: Factor w/ 1 level "the": 1
#$ pred :List of 1
# ..$ : chr "a" "the" "not" "that" ...
#..- attr(*, "class")= chr "AsIs"
或使用空数据框df
df[nrow(df)+1,] <- list('is', list(pred))
str(df)
#'data.frame': 1 obs. of 2 variables:
#$ nGrams: chr "is"
#$ pred :List of 1
# ..$ : chr "a" "the" "not" "that" ...
其中,
pred <- c('a', 'the', 'not', 'that', 'to', 'an')