如何移除数据框rownames中的英文点及后续字符?
移除数据框行名中点(.)及其后字符的方法
以下是几种在R中快速实现需求的实用方法:
方法1:基础R的sub()函数(无需额外包)
用正则表达式匹配第一个英文点及其之后的所有内容,替换为空字符串即可:
# 修改行名 rownames(data) <- sub("\\..*", "", rownames(data)) # 验证结果 head(rownames(data))
正则说明:\\.转义后匹配实际的英文点,.*匹配点之后的任意字符(任意长度),整体将这部分替换为空,仅保留点之前的内容。
方法2:使用stringr包的str_remove()(tidyverse风格)
如果习惯用tidyverse工具链,这个方法语法更直观:
# 未安装stringr包可先执行:install.packages("stringr") library(stringr) rownames(data) <- str_remove(rownames(data), "\\..*") # 验证结果 head(rownames(data))
方法3:分割字符串后取第一部分
通过str_split_fixed将行名按点分割成两部分,直接提取第一部分:
library(stringr) rownames(data) <- str_split_fixed(rownames(data), "\\.", 2)[, 1] # 验证结果 head(rownames(data))
小提示
操作前建议先备份原始行名,避免误操作无法恢复:
original_rownames <- rownames(data)
内容的提问来源于stack exchange,提问作者YiHao Chen
相关产品推荐
相关产品推荐

