r语言 - 如何在 data.frame 列中重复字符串 n 次



我正在尝试在 dplyr 中执行以下操作:

如果我有一个带有序列 (df( 的数据帧,并且想将每行中的序列重复 n 次 (df2(,我如何获得一个可以在 dplyr 中执行此操作的表(答案 = df2(?提前感谢!

df <- data.frame(start = c("ATG", "ATG", "ATG"), 
seq = c("AAACCCTTT", "AAACCCTTT", "AAACCCTTT"), 
stop = c("TAG", "TAG", "TAG"))
df1 <- data.frame(n = c("1", "2", "3"))
df2 <- data.frame(start = c("ATG", "ATGATG", "ATGATGATG"), 
seq = c("AAACCCTTT", "AAACCCTTTAAACCCTTT", "AAACCCTTTAAACCCTTTAAACCCTTT"), 
stop = c("TAG", "TAGTAG", "TAGTAGTAG"))
df <- data.frame(start = c("ATG", "ATG", "ATG"), 
seq = c("AAACCCTTT", "AAACCCTTT", "AAACCCTTT"), 
stop = c("TAG", "TAG", "TAG"))
df1 <- data.frame(n=1:3)
df2 <-
df %>%
bind_cols(df1) %>%
mutate_at(vars(start:stop),~strrep(.,n))
df2

Base R:

df2 <- df
df2[] <- mapply(strrep, df, df1)
df2
start                         seq      stop
1       ATG                   AAACCCTTT       TAG
2    ATGATG          AAACCCTTTAAACCCTTT    TAGTAG
3 ATGATGATG AAACCCTTTAAACCCTTTAAACCCTTT TAGTAGTAG

mutateacross一起使用

library(dplyr)
df %>% 
mutate(across(everything(), ~ strrep(., df1$n)))

最新更新