【问题标题】:Use different separators in the same paste statement R在同一粘贴语句中使用不同的分隔符 R
【发布时间】:2020-07-17 13:41:36
【问题描述】:

我正在尝试将数据框的三列合并为一个:

Chr    Start    End
1       100      105
2       400      420

我想获取列中的坐标,我正在尝试这个:

apply(df, 1, function(x) paste0(i[,1], i[,2], i[,3], sep=c(':', '-')))

除了分隔符之外,这是有效的,因为我没有获得“-”作为第二个分隔符,所以我的输出是这样的:

coord
1:100:105
2:400:420

虽然我想要的输出是:

coord
1:100-105
2:400-420

如何在同一个粘贴语句中使用第二个分隔符?

【问题讨论】:

    标签: r


    【解决方案1】:

    str_c 的选项

    library(stringr)
    library(dplyr)
    df %>%
      mutate(coord = str_c(Chr, ":", Start, "-", End))
    

    【讨论】:

      【解决方案2】:

      考虑使用dplyrpaste0sprintf 的其他几个替代方案:

      library(tidyverse)
      
      df %>%
        mutate(coord = paste0(Chr, ":", Start, "-", End))
      
      df %>%
        mutate(coord = sprintf("%d:%d-%d", Chr, Start, End))
      

      输出

        Chr Start End     coord
      1   1   100 105 1:100-105
      2   2   400 420 2:400-420
      

      【讨论】:

        【解决方案3】:

        您不能在 paste() 语句中使用两个分隔符。请阅读?paste的帮助页面。它说:

        sep = 用于分隔术语的字符串。不是 NA_character_。

        df$coord <- apply(df, 1, function(x) paste(paste(x[1], x[2] , sep=':'), x[3], sep='-'))
        df
        #   Chr Start End     coord
        # 1   1   100 105 1:100-105
        # 2   2   400 420 2:400-420
        

        【讨论】:

          猜你喜欢
          • 2014-07-01
          • 2014-07-23
          • 1970-01-01
          • 1970-01-01
          • 2022-07-13
          • 1970-01-01
          • 2015-10-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多