我想在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"))
使用 mutate
与 across
library(dplyr)
df %>%
mutate(across(everything(), ~ strrep(., df1$n)))
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
基地R。
df2 <- df
df2[] <- mapply(strrep, df, df1)
df2
start seq stop
1 ATG AAACCCTTT TAG
2 ATGATG AAACCCTTTAAACCCTTT TAGTAG
3 ATGATGATG AAACCCTTTAAACCCTTTAAACCCTTT TAGTAGTAG