我正在尝试在 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
将mutate
与across
一起使用
library(dplyr)
df %>%
mutate(across(everything(), ~ strrep(., df1$n)))