我是R的新手,并试图用它来截断电子表格标题中的单词。例如:
Bacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);unclassified(100);
Bacteria(100);Tenericutes(100);Mollicutes(100);Mollicutes_RF9(100);unclassified(100);unclassified(100);
所以我想将分类单元缩短为一个没有数字的单词:像Clostridia和Mollicutes。我认为可以做到,但无法解决问题。
感谢。
答案 0 :(得分:1)
我们可以使用sub
sub("\\(.*", "", "Firmicutes(100)")
假设我们使用read.csv/read.table
使用check.names=FALSE
读取'R'中的数据,然后我们在列名称上应用相同的代码
colnames(data) <- sub("\\(.*", "", colnames(data))
如果是单个字符串
library(stringr)
str1 <- "Bacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);unclassified(100)"
str_extract_all(str1, "[^()0-9;]+")[[1]]
#[1] "Bacteria" "Firmicutes" "Clostridia" "Clostridiales" "Lachnospiraceae"
#[6] "unclassified"
假设我们需要提取第三个词,即“Clostridia”
sub("^([^(]+[(][^;]+;){2}(\\w+).*", "\\2", str1)
#[1] "Clostridia"
答案 1 :(得分:0)
仅使用基本命令,可以使用以下代码提取名称:
nam <- c("Bacteria(100);Tenericutes(100);Mollicutes(100);Mollicutes_RF9(100);unclassified(100);unclassified(100);")
nam <- strsplit(nam, ";")[[1]]
nam <- unname(sapply(nam, FUN=function(x) sub("\\(.*", "", x)))
nam
[1] "Bacteria" "Tenericutes" "Mollicutes" "Mollicutes_RF9" "unclassified" "unclassified"
答案 2 :(得分:0)
这是你需要的吗?还是我完全被误解了?
gsub('\\(.*\\)', '', unlist(strsplit(x, ';'))[3])
#[1] "Clostridia"
其中x
是您的列名