带“|”的 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"
此替代方案删除输出中行尾的 space
gsub("\s+\|.*$", "", string)
[1] "heat-shock protein hsp70, putative"
也许 strsplit
比 gsub
更好
是的,看起来管道确实需要转义。
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"
请注意,我假设您只需要第一个管道之前的文本,并且您想要删除将管道与您关心的字符串部分分开的 space。
我有一个数据框,其中的字符串位于一个带有 |
字符的变量下。我想要的是删除 |
字符下游的所有内容。
例如,考虑字符串
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"
此替代方案删除输出中行尾的 space
gsub("\s+\|.*$", "", string)
[1] "heat-shock protein hsp70, putative"
也许 strsplit
比 gsub
是的,看起来管道确实需要转义。
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"
请注意,我假设您只需要第一个管道之前的文本,并且您想要删除将管道与您关心的字符串部分分开的 space。