我正在尝试使用 reshape2 包和 colsplit 在“.”处分隔。字符串向量中的模式。通常它是一个简单的功能,但由于某种原因它今天对我不起作用。
如果我尝试使用不同的模式,效果很好。我不太确定这个函数是如何工作的,但我尝试像在正则表达式中那样转义它,但这只是通过错误,尽管我承认我不太擅长它们。
这是一个 MWE。我该如何克服这个问题?
library(reshape2)
data <- c("Medtr0001s0360.1", "Medtr0001s0430.1", "Medtr0001s0490.1",
"Medtr0001s0570.1", "Medtr0001s0570.2", "Medtr0001s0570.3")
GO_terms <- colsplit(data, pattern=".", c("a", "b"))
GO_terms
a b
1 NA edtr0001s0360.1
2 NA edtr0001s0430.1
3 NA edtr0001s0490.1
4 NA edtr0001s0570.1
5 NA edtr0001s0570.2
6 NA edtr0001s0570.3
最佳答案
您需要转义“。”
:
> GO_terms <- colsplit(data, pattern="\\.", c("a", "b"))
> GO_terms
a b
1 Medtr0001s0360 1
2 Medtr0001s0430 1
3 Medtr0001s0490 1
4 Medtr0001s0570 1
5 Medtr0001s0570 2
6 Medtr0001s0570 3
来自 ?colsplit
的帮助页面:
pattern: regular expression to split on
由于“pattern”参数是正则表达式,并且 .
是正则表达式中的特殊字符,因此您需要将其视为正则表达式。
关于R: reshape 2 - colsplit 不适用于句号/句号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25131723/