如何在fct_recode中使用列表项

问题描述

我想使用我预先创建的项目,使用fct_recode重命名因子级别。 我首先创建一些标签并将其保存到列表中:

#Creating the Labels:
LabelsWithN <- c(
  sprintf("Man(%s)",FreqGender["Man","Freq"]),sprintf("Woman(%s)",FreqGender["Woman",sprintf("Non-Binary(%s)",FreqGender["Non-Binary",sprintf("Other(%s)",FreqGender["Other",sprintf("Prefer Not To disclose(%s)",FreqGender["Prefer not to disclose","Freq"])
)

这将创建一个带有“ Man(105)”,“ Woman(51)”等项目的Chr列表。 现在,我想在原始数据集中重新标记因子(即“ Man”->“ Man(105)”)以标记图形。我想使用列表项(即LabelsWithN [1])或直接使用创建字符串的函数(即sprintf(“ Man(%s)”,FreqGender [“ Man”,“ Freq”])。>

然后我尝试在fct_recode中输入列表项或函数

#Using the Labels:
DataSet %>%
  mutate(`Gender. What_is_your_ge.._` = fct_recode(`Gender. What_is_your_ge.._`,LabelsWithN[1] = "Man","Freq"]) = "Woman")) %>%
#THis is just the code for the graph:
  ggplot(aes(x = `Gender. What_is_your_ge.._`,y = `Age. How_old_are_you?`,main = "Age distribution By Gender")) +
    geom_Boxplot() +
    xlab("Gender (n)") +
    ylab("Age")

但是,这会产生:

"Unexpected '=' in:
"DataSet %>%
  mutate(`Gender. What_is_your_ge.._` = fct_recode(`Gender. What_is_your_ge.._`,LabelsWithN[1] ="

使用功能或列表项都没关系。

向量是一个因素,列表中填充了字符。如果我操纵代码将因子“ man”重命名为“ cat”(“ cat” =“ Man”),则代码可以正常工作。

如何解决列表项/将函数输入fct_recode以使其起作用? 另外,有人可以向我解释这里的问题是什么?如果我打印出LabelsWithN [1],则会得到正确的字符串。

谢谢你和白,

Jan

解决方法

也许这会有所帮助?

x <- factor(c("apple","bear","banana","dear")) # what you want to recode
levels <- c(fruit = "apple",fruit = "banana") # how you want to recode it
x <- fct_recode(x,!!!levels) # recoding it

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...