我有一个数据框,看起来像这样:

df <- data.frame(V1=c(">A1", "aaaa", "bbb", "cccc",
            ">B2", "dddd", "eeeee","ff",
            ">C3", "ggggggg", "hhhhh", "iiiii", "jjjjj"))

这就是我想要的:

df1 <- data.frame(V1=c(">A1", "aaaabbbcccc",
            ">B2", "ddddeeeeeff",
            ">C3", "ggggggghhhhhiiiiijjjjj"))

如您所见,我希望合并包含以"&gt;"符号开头的字符串的两行之间的每一行. 坦率地说,我不知道从何说起. 请指点一下.

推荐答案

我们可以用cumsum(grepl(.))美元来做这件事.

data.frame(
  V1 = unlist(
    by(df$V1, cumsum(grepl("^>", df$V1)),
       function(z) c(z[1], paste(z[-1], collapse = "")))
  )
)
#                        V1
# 11                    >A1
# 12            aaaabbbcccc
# 21                    >B2
# 22            ddddeeeeeff
# 31                    >C3
# 32 ggggggghhhhhiiiiijjjjj

简要说明:

  • grepl(.) for each 包含>的单元格返回TRUE;然后

  • cumsum为该行和直到下一次出现的所有行分配相同的数字:

    grepl(">", df$V1)
    #  [1]  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
    cumsum(grepl(">", df$V1))
    #  [1] 1 1 1 1 2 2 2 2 3 3 3 3 3
    
  • by(.)会对这些组中的每一个组执行一些操作;在本例中,它返回一个向量长度2,首先是>个字符串,然后是所有其他字符串.

它被构造为你的df1

df1
#                       V1
# 1                    >A1
# 2            aaaabbbcccc
# 3                    >B2
# 4            ddddeeeeeff
# 5                    >C3
# 6 ggggggghhhhhiiiiijjjjj

R相关问答推荐

仅返回R中所有其他列的列ID和年份缺失(NA)数据的列表

如何使用Cicerone指南了解R Shiny中传单 map 的元素?

高质量地将R格式的图表从Word中输出

提取R中值和列名的所有可能组合

Tidyverse/Djirr为从嵌套列表中提取的列名赋值的解决方案

如何在ggplot 2线性图的每个方面显示每个组的误差条?

无法将传奇添加到cowplot多情节中

更改编号列表的 colored颜色

如何使用R对每组变量进行随机化?

如何写一个R函数来旋转最后n分钟?

如何计算多个日期是否在一个日期范围内

对于变量的每个值,仅 Select 包含列表中所有值的值.R

plotly hover文本/工具提示在shiny 中不起作用

在使用tidyModels和XGBoost的二进制分类机器学习任务中,所有模型都失败

基于Key->Value数据帧的基因子集相关性提取

如何在使用箭头R包(箭头::OPEN_DATASSET)和dplyr谓词时编写具有整齐计算的函数?

将多个变量组合成宽格式

如何计算每12行的平均数?

整理曲线图、曲线图和点图

如何修改GT表中组名行的 colored颜色 ?