字符串作为R中的因子

时间:2013-06-03 11:49:30

标签: r

在R中创建数据框时,字符串默认转换为因子(我不介意)。但是当我想在我的数据框中创建一个新行时,我找不到将字符串编码为一个因子的方法。如果我使用factor(),字符串将转换为数字,但仍不是一个因素。在任何一种情况下,我都无法将新行追加到数据框中,因为新行不是一个因素。我想要的是让我的新行表现得像我的数据帧,即将字符串转换为因子。

> 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 个答案:

答案 0 :(得分:10)

诀窍是只有rbind data.frame与另一个data.frame,而不是像你所做的那样只有一个简单的vector

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 :(得分:1)

也许这样的事情对你有帮助吗?

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

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