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

kla*_*msi -1 regex r gsub

我有一个数据框来处理我有一堆变量作为引号的因素,如""x1"".

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

$ x : Factor w/ 10 Levels "\"\"x1\"\"",..: 1 7 9 ...
Run Code Online (Sandbox Code Playgroud)

我试图摆脱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"))
Run Code Online (Sandbox Code Playgroud)

提前致谢!

And*_*ico 5

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

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

#> vec
#[1] x1 x2 x3
#Levels: x1 x2 x3
Run Code Online (Sandbox Code Playgroud)
  • '当我想"在字符串中使用时,看看我将如何用作包装器.

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

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

正如您现在提供的数据,您可以使用:( df1作为您的数据与因子列)

df1[] <- lapply(df1, function(vec){ levels(vec) <- gsub('["\\]',"",levels(vec)); vec})
Run Code Online (Sandbox Code Playgroud)

  • `levels(vec)< - gsub('"',"",levels(vec),fixed = TRUE)`也可以. (2认同)