我努力删除"D_1__"
中的字符串"D_2__"
,"D_3__"
,data.frame
等,同时保留后续文本,即输入:{ {1}}输出:"D_1__succeeding text"
。
我试过
"succeeding text"
但没有改变
此外,导入的df <- gsub("D_.__", "", df)
的列是data.frame
,其中包含多个级别。这可能导致问题,如何转换factors
?
非常感谢你的帮助!
答案 0 :(得分:1)
您面临两个问题:gsub
旨在处理字符向量,而不是整个数据框,并且您还处理因子而不是字符向量。
我不确定您是如何导入数据的,但您可能可以选择使用stringsAsFactors = FALSE
来阻止字符串首先作为因素被读取,例如:对于CSV数据:
df <- read.csv('mydata.csv', stringsAsFactors = FALSE)
或者,您可以将因子转换为字符串:
df$myvar <- as.character(df$myvar)
一旦你有了一个角色向量,就可以像使用它一样使用gsub,只需指定变量:
df$myvar <- gsub('D_.__', '', df$myvar)
最后,如果您确实希望将变量作为因子,则可以重命名级别:
levels(df$myvar) <- gsub('D_.__', '', levels(df$myvar))
答案 1 :(得分:0)
strings <- c("D_1__text1" , "D_2__text2" , "D_3__text3")
new_strings <- gsub("D_\\d__", "", strings)
> new_strings
[1] "text1" "text2" "text3"
如果您的特定数据存在问题,请添加dput(your_df)
。我认为您的问题是如何存储结果。像df$colnew <- gsub(..., df$colold)
这样的东西应该有效。
答案 2 :(得分:0)
Thanks for your suggestions. Finally, I managed to convert my df to a character matrix by:
df <- data.frame(lapply(df, as.character), stringsAsFactors=FALSE)
Then I applied:
gsub('D_.__', '', df$V1)
for each column separately. For just 15 columns this was quite feasable :-)