如何使用不同的连接器粘贴列

Dav*_*d Z 3 r

例如,

df<-data.frame(chr=c(3,4,5),
 start=c(11,12,13),
 end=c(21,22,23))
df
  chr start end
1   3    11  21
2   4    12  22
3   5    13  23
Run Code Online (Sandbox Code Playgroud)

我的问题是使用“:”和“-”粘贴三列,以便所需的输出为df$anno

df
  chr start end    anno
1   3    11  21 3:11-21
2   4    12  22 4:12-22
3   5    13  23 5:13-23
Run Code Online (Sandbox Code Playgroud)

Rol*_*and 10

我会使用sprintf

df <- within(df, anno <- sprintf("%d:%d-%d", chr, start, end))

#  chr start end    anno
#1   3    11  21 3:11-21
#2   4    12  22 4:12-22
#3   5    13  23 5:13-23
Run Code Online (Sandbox Code Playgroud)


akr*_*run 5

paste被向量化。因此,我们可以直接在指定的分隔符之间粘贴列

df$anno <- with(df, paste0(chr, ":", start, "-", end))
df$anno
#[1] "3:11-21" "4:12-22" "5:13-23"
Run Code Online (Sandbox Code Playgroud)

或使用 str_c

library(tidyverse)
df %>%
    mutate(anno = str_c(chr, ":", start, "-", end))
Run Code Online (Sandbox Code Playgroud)