【问题标题】:Working with map function and vectors in R在 R 中使用映射函数和向量
【发布时间】:2021-05-10 21:56:51
【问题描述】:

我正在尝试使用 purrr::map() 函数了解向量的工作原理。我有一个向量c("cat", "fish", "hamster"),我想将其转换为以下输出:

[[1]]
[1] "cat" "cat" "cat"

[[2]]
[1] "fish" "fish"

[[3]]
[1] "hamster"

不确定我应该使用哪个map() 函数以及如何使用它。我发现它是第一个元素重复三次,第二个元素重复两次,第三个元素重复一次。

【问题讨论】:

    标签: r purrr


    【解决方案1】:

    我们不需要为此打包。使用repsplit 会更快

    v2 <- rep(v1, length(v1):1)
    split(v2, v2)
    #$cat
    #[1] "cat" "cat" "cat"
    
    #$fish
    #[1] "fish" "fish"
    
    #$hamster
    #[1] "hamster"
    

    或使用imap

    library(purrr)
    rev(imap(rev(v1), ~ rep(.x, .y)))
    

    数据

    v1 <- c("cat", "fish", "hamster")
    

    【讨论】:

      【解决方案2】:

      你可以使用:

      x <- c("cat", "fish", "hamster")
      map2(x, 3:1, rep)
      

      【讨论】:

        【解决方案3】:

        另一个使用 Map + replicate 的基本 R 选项

        > Map(replicate, rev(seq_along(v)), v)
        [[1]]
        [1] "cat" "cat" "cat"
        
        [[2]]
        [1] "fish" "fish"
        
        [[3]]
        [1] "hamster"
        

        【讨论】:

          【解决方案4】:

          在基础R 中,您可以使用mapply

          v <- c("cat", "fish", "hamster")
          mapply(rep, v, 3:1)
          

          或者pmap:

          purrr::pmap(list(v, 3:1), rep)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-03-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-05-01
            • 2019-08-30
            相关资源
            最近更新 更多