【问题标题】:dplyr : Error in mutate_impl(.data, dots) : argument 'times' incorrectdplyr:mutate_impl(.data,dots)中的错误:参数“次”不正确
【发布时间】:2017-08-21 22:29:03
【问题描述】:

我有一个小标题:

# A tibble: 2 × 2
  read_seq unique_id
     <chr>     <dbl>
1 AATTGGCC         1
2   GGGTTT         2

我想创建一个包含与 read_seq 大小相同的字符串的新变量。我这样做了,但有一个错误:

> r %>% mutate(y=paste(rep("H",width(read_seq)),sep=""))
Error in mutate_impl(.data, dots) : argument 'times' incorrect

当我只尝试捕获 read_seq 宽度时,它可以工作:

> r %>% mutate(y=width(read_seq))
# A tibble: 2 × 3
  read_seq unique_id     y
     <chr>     <dbl> <int>
1 AATTGGCC         1     8
2   GGGTTT         2     6

这是可重复性示例的 dput():

r <- structure(list(read_seq = c("AATTGGCC", "GGGTTT"), unique_id = c(1, 
2)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-2L), .Names = c("read_seq", "unique_id"))

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    错误来自reptimes参数需要为1或与x长度相同,这里不是这样:

    rep("H", c(1,2))
    Error in rep("H", c(1, 2)) : invalid 'times' argument
    

    您可以改用strrep,它会根据需要回收xtimes

    r %>% mutate(y = strrep("H",nchar(read_seq)))
    
    # A tibble: 2 x 3
    #  read_seq unique_id        y
    #     <chr>     <dbl>    <chr>
    #1 AATTGGCC         1 HHHHHHHH
    #2   GGGTTT         2   HHHHHH
    

    或者,如果您需要一些大小相等的随机字符串,请使用stringi::stri_rand_strings

    r %>% mutate(y = stri_rand_strings(length(read_seq), nchar(read_seq)))
    
    # A tibble: 2 x 3
    #  read_seq unique_id        y
    #     <chr>     <dbl>    <chr>
    #1 AATTGGCC         1 H0flAbNS
    #2   GGGTTT         2   QrQOLj
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      相关资源
      最近更新 更多