我在循环内创建数字和字符的列表,并将该列表分配给数据框。我已经事先定义了每个变量,但我没有使用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/