2015-05-09 96 views
1

我想要做的是這樣的:R:添加data.frame(包括數字和字符)細胞在另一個data.frame

> a <- data.frame (col1=c(NA,NA,NA,NA), col2=c(NA,NA,NA,NA), col3=c(NA,NA,NA,NA)) 
> b <- data.frame(cola="test", colb=1) 
> a[1,2:3] <- b 
> a 
    col1 col2 col3 
1 NA test 1 
2 NA NA NA 
3 NA NA NA 
4 NA NA NA 

不過,我得到了通過執行上面的代碼是:

> a 
    col1 col2 col3 
1 NA 1 1 
2 NA NA NA 
3 NA NA NA 
4 NA NA NA 

我怎樣才能在另一個data.frame添加字符到特定行?

我可以將字符添加到單個單元格,但似乎字符會自動轉換爲數字,如果我添加兩個或更多。

> a[1,2] <- "test" 
> a 
    col1 col2 col3 
1 NA test NA 
2 NA <NA> NA 
3 NA <NA> NA 
4 NA <NA> NA 

回答

1

發生這種情況是因爲b$cola是一個因素。如果將列值轉換爲字符串,它將起作用。

b$cola <- as.character(b$cola) 
a[1,2:3] <- b 
a 
# col1 col2 col3 
# 1 NA test 1 
# 2 NA <NA> NA 
# 3 NA <NA> NA 
# 4 NA <NA> NA 
+0

它當然可以工作,但是你能解釋一下這裏發生了什麼嗎? '<-'檢查替換'b $ cola'的第一個元素的類型,發現它是一個不能被賦值給'a [1,2]的類型(因子),移動到第二個元素替換'b $ colb',分配它,然後回收它? – tchakravarty

+0

@fgnu它與回收沒有任何關係。在內部,因素值表示爲整數(從1開始)。在原始命令中,內部值被分配給'a',而不是因子等級的標籤。 –

+0

謝謝!它完美的作品! – user51966