从数据框中的因素中删除双引号
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})
我有一个数据框可以处理,我有一堆变量作为引号中的因素,例如 ""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})