R 如何重构向量?

R 如何重构向量?,r,R,我有这个向量 v <- c("firstOne","firstTwo","secondOne") 但我得到了一个重复因子(和一条警告信息,建议不要使用它)。相反,我希望输出如下所示: [1] firstOne firstOne secondOne Levels: firstOne secondOne 有没有办法在不粗暴地替换字符串的情况下获得此输出?以下是几个选项: v <- factor(ifelse(v %in% c("firstOne", "firstTwo")

我有这个向量

v <- c("firstOne","firstTwo","secondOne")
但我得到了一个重复因子(和一条警告信息,建议不要使用它)。相反,我希望输出如下所示:

[1] firstOne  firstOne      secondOne
Levels: firstOne secondOne

有没有办法在不粗暴地替换字符串的情况下获得此输出?

以下是几个选项:

v <- factor(ifelse(v %in% c("firstOne", "firstTwo"), "firstOne", "secondOne"))
v <- factor(v,levels = c("firstOne","secondOne")); f[is.na(f)] <- 'firstOne'

v因子只是一个带标签的数字(整数)向量,因此操作因子等同于操作整数,而不是字符串。因此,从性能角度考虑是完全可以做到的

f <- as.factor(v)
f[f %in% c('firstOne', 'firstTwo')] <- 'firstOne'
f <- droplevels(f)

f您可以使用以下功能的
rec
-功能:


(输出被缩短;请注意,sjmisc包支持并因此向向量添加标签属性,您也可以在控制台输出中看到)

最终,我还找到了一个解决方案,该解决方案看起来有些马虎,但我没有看到主要问题(期待收听此tho可能存在的问题):


v改为指定级别,然后您就完成了<代码>级别(f)[levels(f)%in%c(“firstOne”,“firstTwo”)]@最近的邮件我不知道这是可能的,但它是
f <- as.factor(v)
f[f %in% c('firstOne', 'firstTwo')] <- 'firstOne'
f <- droplevels(f)
rec(v, "firstTwo=firstOne;else=copy", as.fac = T)

> [1] firstOne  firstOne  secondOne
> Levels: firstOne secondOne
v <- c("firstOne","firstTwo","secondOne")
factor(v)
factor(factor(v,labels = c("firstOne","firstOne","secondOne")))