2013-06-03 22 views
6

Rでデータフレームを作成するとき、文字列はデフォルトで因子に変換されます(これは気にしません)。しかし、データフレームに新しい行を作成したいときは、文字列を要素としてエンコードする方法を見つけることができません。 factor()を使用した場合、文字列は数字に変換されますが、それはまだ要素ではありません。どちらのシナリオでも、新しい行は要素ではないため、データフレームに新しい行を追加することはできません。私が望むのは、私の新しい行を私のデータフレームのように振る舞わせることです。つまり、文字列を要素に変換します。Rの因子としての文字列R

> data.frame(c("Name one", "Name two")) -> my.data 
> colnames(my.data) <- "Names" 
> is.factor(my.data$Names) 
[1] TRUE 
> new.row1 <- c("Name three") 
> is.factor(new.row1)[1] 
[1] FALSE 
> new.row2 <- c(factor("Name three")) 
> new.row2 
[1] 1 
> is.factor(new.row2)[1] 
[1] FALSE 
> rbind(my.data, new.row1) 
    Names 
1 Name one 
2 Name two 
3  <NA> 
Warning message: 
In `[<-.factor`(`*tmp*`, ri, value = "Name three") : 
    invalid factor level, NA generated 
> rbind(my.data, new.row2) 
    Names 
1 Name one 
2 Name two 
3  <NA> 
Warning message: 
In `[<-.factor`(`*tmp*`, ri, value = 1L) : 
    invalid factor level, NA generated 
> 
+2

「c」はすべての属性を削除することに注意してください。したがって、それは因子を整数に変換する。 – Roland

答えて

10

トリックは、あなたが簡単なvectorで、行ったように、別のdata.frameないとだけrbinddata.frameにある:

my.data <- data.frame(Names = c("Name one", "Name two")) 
new.row1 <- data.frame(Names = c("Name three")) 
rbind(my.data, new.row1) 

##  Names 
## 1 Name one 
## 2 Name two 
## 3 Name three 
1

たぶん、このようなものはあなたを助けるために起こっていますか?

data.frame(c("Name one", "Name two")) -> my.data 
colnames(my.data) <- "Names" 

rbind(my.data, data.frame(Names="name three"))