r - 字符串作为 R 中的因子

标签 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
> 

最佳答案

诀窍是只有 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

关于r - 字符串作为 R 中的因子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16896026/

相关文章:

R Leaflet map - 为每一行数据框画线

r - 快速选择某些列之间的行的最大元素

r - 将函数应用于 R 中两个矩阵的所有列对

在负方向和正方向回收字符向量

r - 我如何在 R 中的一个地方找到所有美国人口普查区?

r - 使用 lm()、nls()(和 glm()?)估计马尔萨斯增长模型中的人口增长率

r - plotly 中的静态多边形?可能吗?

regex - 根据前缀和后缀对字符串进行子集化

r - 在 dplyr mutate 中使用 sum 函数

r - R 中的树 : regression vs classification