例如,
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)
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)