从数据框中的因素中删除双引号

remove double quotes from factors in a dataframe

我有一个数据框可以处理,我有一堆变量作为引号中的因素,例如 ""x1""

str(df) 给我这样的东西:

$ x : Factor w/ 10 Levels "\"\"x1\"\"",..: 1 7 9 ...

我试图用 gsub() 函数去掉引号,但没有成功。可能是因为我不知道要插入什么作为模式?如果有人能解决这个难题并向我解释 "\"\"x1\"\"" 是否是解决方案,那就太好了?

数据框的示例如下所示:

structure(list(Sent = structure(c(2L, 2L, 2L, 2L, 2L), .Label = c("\"\"Opted out\"\"", 
"\"\"Yes\"\""), class = "factor"), Responded = structure(c(2L, 
2L, 2L, 2L, 2L), .Label = c("\"\"Complete\"\"", "\"\"No\"\"", 
"\"\"Partial\"\""), class = "factor")), row.names = c(NA, -5L
), class = c("tbl_df", "tbl", "data.frame"), .Names = c("Sent", 
"Responded"))

提前致谢!

vec = c('""x1""', '""x2""', '""x3""')
vec =  factor(vec)

levels(vec) <- gsub('["\]', "", levels(vec))

#> vec
#[1] x1 x2 x3
#Levels: x1 x2 x3

  • 看看当我想在字符串中使用 " 时如何使用 ' 作为包装器。

  • 它对您不起作用的另一个问题可能是因为您没有使用 levels 属性,而是使用因子变量本身。

  • 因子变量在内部存储为 1, 2, 3,... 个数字。

由于您现在已经提供了数据,因此您可以使用:(df1 作为您的带有因子列的数据)

df1[] <- lapply(df1, function(vec){ levels(vec) <- gsub('["\]',"",levels(vec)); vec})