无法将行插入数据框

时间:2017-04-23 05:14:25

标签: r

我创建了一个数据框如下:

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生成

1 个答案:

答案 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)来禁用此选项

由于