我有以下数据框:

df <- data.frame(V1 = c(">A1_[Er]", 
                        "aaaabbbcccc", 
                        ">B2_[Br]", 
                        "ddddeeeeeff", 
                        ">C3_[Gh]", 
                        "ggggggghhhhhiiiiijjjjjj"))

我想将字符串按固定数量的字符拆分(对于这个特定问题,两个字符),并将它们放在新的行中.我还想排除包含以"&gt;"符号开头的字符串的行.生成的数据框应如下所示:

df1 <- data.frame(V1 = c(">A1_[Er]", "aa", "aa", "bb", "bc", "cc", "c", 
                         ">B2_[Br]", "dd", "dd", "ee", "ee", "ef", "f",
                         ">C3_[Gh]", "gg", "gg", "gg", "gh", "hh", "hh", "ii", "ii", "ij", "jj", "jj", "jj"))

我try 在子集的DF上使用Separate_Long_Position()函数,如下所示:

separate_longer_position(subset(df, !df$V1 %like% ">"), V1, 2)

我的方法确实删除了所需的字符串,但也保留了结果数据框中包含以"&gt;"开头的字符串的行.

顺便说一句,这确实是一种FASTA格式,但出于教育目的,我不想使用像BioStrings这样的专用包来解决这个问题.

请指点一下.

推荐答案

你可以试试regmatches

df1 <-
  data.frame(V1 = with(
    df,
    unlist(
      lapply(
        V1,
        function(x) {
          if (startsWith(x, ">")) {
            x
          } else {
            regmatches(x, gregexpr("\\w{1,2}", x))
          }
        }
      )
    )
  ))

并获得

> df1
         V1
1  >A1_[Er]
2        aa
3        aa
4        bb
5        bc
6        cc
7         c
8  >B2_[Br]
9        dd
10       dd
11       ee
12       ee
13       ef
14        f
15 >C3_[Gh]
16       gg
17       gg
18       gg
19       gh
20       hh
21       hh
22       ii
23       ii
24       ij
25       jj
26       jj
27        j

R相关问答推荐

创建重复删除的唯一数据集组合列表

为什么以及如何修复Mapview不显示所有点并且st_buffer合并一些区域R?

使用sensemakr和fixest feols模型(R)

变量计算按R中的行更改

如果列中存在相同的字符串,则对行值进行总和

多重RHS固定估计

在for循环中转换rabrame

如何使用tryCatch执行语句并忽略警告?

DEN扩展包中的RECT树形图出现异常行为

如何指定我的函数应该查找哪个引用表?

R中1到n_1,2到n_2,…,n到n_n的所有组合都是列表中的向量?

展开对数比例绘图的轴(添加填充)

用两种 colored颜色 填充方框图

使用R中的dist()迭代ID匹配的欧几里德距离

来自程序包AFEX和amp;的类/函数和NICE_TABLE&冲突

无法将条件case_when()应用于使用!!创建的新变量Mutations

将某个阈值以下的列中的值分类到不同的列中,否则保持该列的原样

从两个数据帧中,有没有办法计算R中一列的唯一值?

在使用ggplot2的情况下,如何在使用coord_trans函数的同时,根据未转换的坐标比来定位geom_瓷砖?

R data.设置函数&;连接中的列值而不使用for循环的表方法?