繁体   English   中英

带“|”的gsub R中的字符

[英]gsub with "|" character in R

我在变量下有一个带有字符串的数据框| 特点。 我想要的是删除任何下游的| 特点。

例如,考虑字符串

heat-shock protein hsp70, putative | location=Ld28_v01s1:1091329-1093293(-) | length=654 | sequence_SO=chromosome | SO=protein_coding

我希望只有:

heat-shock protein hsp70, putative

我是否需要任何转义字符为| 特点?

如果我做:

a <- c("foo_5", "bar_7")
gsub("*_.", "", a)

我得到:

[1] "foo" "bar"

即我正在删除_字符下游的任何内容。

但是,如果我用|重复相同的任务而不是_

b <- c("foo|5", "bar|7")
gsub("*|.", "", a)

我得到:

[1] "" ""

你必须逃避| 通过添加\\\\| . 尝试这个

> gsub("\\|.*$", "", string)
[1] "heat-shock protein hsp70, putative "

string在哪里

string <- "heat-shock protein hsp70, putative | location=Ld28_v01s1:1091329-1093293(-) | length=654 | sequence_SO=chromosome | SO=protein_coding"

此替代方法删除输出中行尾的空格

 gsub("\\s+\\|.*$", "", string)
[1] "heat-shock protein hsp70, putative"

strsplitgsub更好

是的,看起来管道确实需要转义。

string <- "heat-shock protein hsp70, putative | location=Ld28_v01s1:1091329-1093293(-) | length=654 | sequence_SO=chromosome | SO=protein_coding"
strsplit(string, ' \\| ')[[1]][1]

那输出

"heat-shock protein hsp70, putative"

请注意,我假设您只需要第一个管道之前的文本,并且您希望删除将管道与您关心的字符串部分分开的空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM