我创建了一个数据框如下:
d <- data.frame(Year=character())
之后,我在向数据框中插入行时收到警告消息:
> d[0,] <- '100'
Error in `[<-.data.frame`(`*tmp*`, 0, , value = "100") :
replacement has 1 row, data has 0
我不确定我的代码有什么问题。 d[0,]=
不正确吗?
EDIT1
我尝试使用1作为索引但仍然出错:
> d[1,] <- '100'
警告讯息: 在
[<-.factor
(*tmp*
,iseq,value = 100)中: 无效因子水平,NA生成
答案 0 :(得分:1)
摘自一本名为&#34; 动手编程与R &#34;作者:Garrett Grolemund,我希望在SO中引用一本书。
在某些编程语言中,索引从0开始。这意味着 0返回向量的第一个元素,1返回第二个元素, 等等。
R不是这种情况.R中的索引行为就像索引一样 在线性代数中。第一个元素始终用1索引。
你应该从1开始索引而不是0,所以在你的情况下它应该是
d[1,] <- 100
> d
Year
1 100
编辑:OP似乎也在使用stringsAsFactors = T,在这种情况下,他正在收到如下警告:
警告讯息:
[<-.factor
(*tmp*
,iseq,value =&#34; 100&#34;):
无效因子水平,NA生成
但是,如果应该stringsAsFactors=F
,我们可以避免上述警告
d <- data.frame(Year=character(),stringsAsFactors = F)
也可以在r控制台上使用options(stringsAsFactors=F)
来禁用此选项
由于