我在循环内创建数字和字符的列表,并将该列表分配给数据框。我已经事先定义了每个变量,但我没有使用factor(至少我有这种感觉)。基本上,我想使用上面提到的变量创建一个数据框。这是我尝试使用的代码:

NumToShow    = numeric(0)
MatToShow    = character()
flag         = numeric(0)

datalist = data.frame(NumToShow,MatToShow,flag)

for (i in 1:3){
  NumToShow = i
  MatToShow = "aaa"
  flag = i^2

  Row_i = list(NumToShow,MatToShow,flag)
  # Combining all the data
  datalist[i,] = Row_i
}

我收到错误:
In `[<-.factor`(`*tmp*`, iseq, value = "aaa") :
  invalid factor level, NA generated

我不确定为什么会得到它。任何帮助将不胜感激。抱歉,这很愚蠢。谢谢 :)

最佳答案

检查?data.frame():

data.frame(..., row.names = NULL, check.rows = FALSE,
           check.names = TRUE, fix.empty.names = TRUE,
           stringsAsFactors = default.stringsAsFactors())

然后输入:
default.stringsAsFactors()
# [1] TRUE

您需要显式设置stringsAsFactors = FALSE,以便data.frame()不将字符视为因素。

关于r - 为数据框分配列表-出现错误: invalid factor level, NA generated,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40312449/

10-10 05:49