替换^和|矩阵中的符号

时间:2011-04-06 09:37:16

标签: r substitution

我有下表:

column1  column2
1        aaa^bbb
2        aaa^bbb|ccc^ddd

我想要一个输出文件如下:

column1   column2     column3
1         aaa         bbb
2         aaa         bbb
3         ccc         ddd

如果有聪明的方法,你能否告诉我?

更新

我试图做两件事;

对于^,我想将上下文分为第2列和第3列。

对于|,我想将它分隔到下一行,但在column1中保持相同的数字(第1行和第3行的列1相同。抱歉我在这里犯了错误。

要重写,输入如下:

column1  column2 
x        aaa^bbb 
y        aaa^bbb|ccc^ddd 

输出如下:

column1   column2     column3 
x         aaa         bbb 
y         aaa         bbb 
y         ccc         ddd 

1 个答案:

答案 0 :(得分:5)

最简单的方法就是使用strsplit。例如,

> x = c("aaa^bbb", "aaa^bbb|ccc^ddd")
> ## Split the vector on ^ OR |.
> ## Since ^ and | are special characters
> ## we need to escape them: \\^ and \\|
> ## Split by column.
> new_x = unlist(strsplit(x, "\\|"))
> ## Split by row
> new_x = unlist(strsplit(new_x, "\\^"))
> new_x
 [1] "aaa" "bbb" "aaa" "bbb" "ccc" "ddd"

> ## Change the vector back into a matrix
> dim(new_x) = c(2,3)
> ## Transpose to get correct shape
> t(new_x)
     [,1]  [,2] 
[1,] "aaa" "bbb"
[2,] "aaa" "bbb"
[3,] "ccc" "ddd"

您可能会将拆分步骤结合起来,但我对您的数据格式知之甚少,无法确信它始终有效。