在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
>
最佳答案
诀窍是仅用另一个rbind
对data.frame
进行data.frame
编码,而不能像使用简单的vector
那样将ojit_code编码:
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
关于r - 字符串作为R中的因子,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16896026/