R: reshape 2 - colsplit 不适用于句号/句号

标签 r reshape2

我正在尝试使用 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/

相关文章:

r - 将一列拆分为多个 R 并在为真时给出逻辑值

r - 有效地广播具有多个变量的大型数据集

r - 在不指定列名的情况下将列转换为行

r - 如何更新条件公式?

r - 在 RSQLite 中使用日期

r - 如何使用 R 中的分解功能分解 JSON 文件中的数据集?

R 将列表变量分配给现有字符串

r - 结果列表的成对矩阵

R 使用 dcast、melt 和 concatenation reshape 数据框

r - 计算以观察 == 1 为条件按受试者 ID 聚合的游程长度