I have a data in text file which contain several column, I would like to process data in such a way that I should not loose any information, some coulmn include two or more information seperated with special character such as "+" plus sign, I would like to put this combined information in differnt row within same column, for example I pasted data below here
My dataframe look like following

df <- data.frame(G1=c("GH13_22+CBM4",  "GH109+PL7+GH9","GT57", "AA3","",""),
                 G2=c("GH13_22","","GT57+GH15","AA3", "GT41","PL+PL2"),
                 G3=c("GH13", "GH1O9","", "CBM34+GH13+CBM48", "GT41","GH16+CBM4+CBM54+CBM32"))
             G1        G2                    G3
1  GH13_22+CBM4   GH13_22                  GH13
2 GH109+PL7+GH9                           GH1O9
3          GT57 GT57+GH15
4           AA3       AA3      CBM34+GH13+CBM48
5                    GT41                  GT41
6                  PL+PL2 GH16+CBM4+CBM54+CBM32

预期结果应如下所示

df2 <- data.frame(G1=c("GH13_22","CBM4",  "GH109","PL7","GH9","GT57", "AA3","","","",""),
                  G2=c("GH13_22","","GT57","GH15","AA3", "GT41","PL","PL2","","",""),
                  G3=c("GH13", "GH1O9","", "CBM34","GH13","CBM48", "GT41","GH16","CBM4","CBM54","CBM32")) 
        G1      G2    G3
1  GH13_22 GH13_22  GH13
2     CBM4         GH1O9
3    GH109    GT57
4      PL7    GH15 CBM34
5      GH9     AA3  GH13
6     GT57    GT41 CBM48
7      AA3      PL  GT41
8              PL2  GH16
9                   CBM4
10                 CBM54
11                 CBM32

感谢您的任何帮助 谢谢

推荐答案

base%的解决方案:

split <- lapply(df, \(x) unlist(strsplit(replace(x, x == '', NA_character_), '\\+')))
as.data.frame(lapply(split, `[`, 1:max(lengths(split))))

        G1      G2    G3
1  GH13_22 GH13_22  GH13
2     CBM4    <NA> GH1O9
3    GH109    GT57  <NA>
4      PL7    GH15 CBM34
5      GH9     AA3  GH13
6     GT57    GT41 CBM48
7      AA3      PL  GT41
8     <NA>     PL2  GH16
9     <NA>    <NA>  CBM4
10    <NA>    <NA> CBM54
11    <NA>    <NA> CBM32

R相关问答推荐

使用lapply的重新定位功能

如何在R中添加截止点到ROC曲线图?

bslib::card_header中的shine::downloadButton,图标而不是文本

错误:非常长的R行中出现意外符号

如何自定义3D散点图的图例顺序?

传递ggplot2的变量作为函数参数—没有映射级别以正确填充美学

如何读取CSV的特定列时,给定标题作为向量

使用`Watch()`和`renderUI()`时,不再满足仍出现在SHILINY AFTER条件中的条件输入

在保留列表元素属性的同时替换列表元素

使用不同的定性属性定制主成分分析中点的 colored颜色 和形状

如何将一个方阵分解成没有循环的立方体

为什么我对圆周率图的蒙特卡罗估计是空的?

R -基线图-图形周围的阴影区域

是否有可能从边界中找到一个点值?

避免在图例中显示VLINS组

将数据从一列转换为按组累计计数的单个虚拟变量

分隔日期格式为2020年7月1日

基于R中的引用将向量值替换为数据框列的值

如何将数据框压缩为更宽,同时将行输入保持为行输入,而不是R中的列名?

如何在用`{{ }}`创建的变量上使用整洁 Select ?