我有一个数据框来处理我在哪里有很多变量作为引号中的变量,例如""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"))
谢谢!
答案 0 :(得分:5)
vec = c('""x1""', '""x2""', '""x3""')
vec = factor(vec)
levels(vec) <- gsub('["\\]', "", levels(vec))
#> vec
#[1] x1 x2 x3
#Levels: x1 x2 x3
看看当我想在字符串中使用'
时如何使用"
作为包装器。
另一个对您不起作用的问题可能是因为您没有使用level属性,而是使用了因子变量本身。
1, 2, 3,...
数字。现在,您已经提供了数据,可以使用:(df1
是包含因子列的数据)
df1[] <- lapply(df1, function(vec){ levels(vec) <- gsub('["\\]',"",levels(vec)); vec})