R语言实现删除表格多列中冒号后所有内容的方法求助
问题原因
你写的代码有三个核心错误:
- 正则规则错误:
:*仅匹配连续冒号本身,不会匹配冒号后的所有内容,无法实现截断效果 - 语法错误:
sub函数的参数之间用逗号分隔,你写的''. data属于语法错误 - 处理方式错误:直接对整个数据框调用字符串替换函数会丢失表格结构,输出自然变成列表格式
正确实现代码
方法1:tidyverse风格(代码更简洁易读)
library(dplyr) # df为你读入的原始表格数据框 df_result <- df %>% # 对除了CHROM之外的所有列执行替换,保留第一个冒号前的内容 mutate(across(-CHROM, ~ sub(":.*", "", .x)))
方法2:Base R实现(无需安装额外包)
df_result <- df # 对第2列到最后一列逐列处理 df_result[, -1] <- apply(df_result[, -1], 2, function(x) sub(":.*", "", x))
处理完成后df_result就是符合要求的表格结构,你可以直接用print(df_result)查看效果,需要导出到文件的话用write.table(df_result, "output.txt", sep = "\t", quote = F, row.names = F)即可得到你示例的输出文件。
内容的提问来源于stack exchange,提问作者tacrolimus
相关产品推荐
相关产品推荐

