我如何在data.frame列中重复一个字符串n次?

问题描述 投票:-1回答:1

我想在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"))
r dataframe dplyr
1个回答
1
投票

使用 mutateacross

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

2
投票
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

2
投票

基地R。

df2 <- df
df2[] <- mapply(strrep, df, df1)
df2

      start                         seq      stop
1       ATG                   AAACCCTTT       TAG
2    ATGATG          AAACCCTTTAAACCCTTT    TAGTAG
3 ATGATGATG AAACCCTTTAAACCCTTTAAACCCTTT TAGTAGTAG
© www.soinside.com 2019 - 2024. All rights reserved.