2017-04-23 77 views
0

我創建瞭如下一個數據幀:無法插入一行到數據幀

d <- data.frame(Year=character()) 

後,我得到了一個警告信息時行插入到數據幀:

> d[0,] <- '100' 
Error in `[<-.data.frame`(`*tmp*`, 0, , value = "100") : 
    replacement has 1 row, data has 0 

我不是確定我的代碼有什麼問題。​​不正確?

EDIT1

我試圖用1作爲指標,但仍然得到了一個錯誤:

> d[1,] <- '100' 

Warning message: In [<-.factor (*tmp* , iseq, value = 100) : invalid factor level, NA generated

+0

你應該從1不是0,'d啓動[1] < - 100' – PKumar

回答

1

從一本書叫「動手編程與R中的摘錄由Garrett Grolemund撰寫的「」,我希望在SO中允許引用一本書。

In some programming languages, indexing begins with 0. This means that 0 returns the first element of a vector, 1 returns the second element, and so on.

This isn’t the case with R. Indexing in R behaves just like indexing in linear algebra. The first element is always indexed by 1.

你應該開始從1不是0的索引,所以你的情況應該是

d[1,] <- 100 

> d 
    Year 
1 100 

編輯:這似乎也OP使用stringsAsFactors = T,在這種情況下,他被recieving如下面的一個警告:

Warning message: In [<-.factor (*tmp* , iseq, value = "100") :
invalid factor level, NA generated

但是,如果一個應該做一個stringsAsFactors=F那麼我們就可以避免上面的警告

d <- data.frame(Year=character(),stringsAsFactors = F) 

人們也可以通過使用options(stringsAsFactors=F) [R控制檯上

由於禁用此選項

+0

我曾嘗試使用1作爲索引,但仍然有錯誤。我更新了我的問題。 –

+0

@趙一警告不是錯誤。 –