【问题标题】:Alternate elements of a vector with multiple NAs具有多个 NA 的向量的替代元素
【发布时间】:2019-12-15 19:22:15
【问题描述】:

我在 R 中有一个字符向量,并且想在字符向量的元素之间创建一个具有多个 NA 的新向量。为简化起见,字符向量为:

cv <- c( "A", "B", "C" )

假设我们只需要 3 个 NA(实际上需要更多)。所需的输出向量为:

"A", NA, NA, NA, "B", NA, NA, NA, "C", NA, NA, NA

我猜以前有人问过这个问题,但是很难搜索。我尝试了 rep 和 rbind 的各种排列和组合,但没有成功。要温柔;我的第一个问题:-)

【问题讨论】:

    标签: r vector


    【解决方案1】:

    使用sapply 将c(NA, NA, NA) 连接到cv 的每个元素,以便对于cv 的每个元素,我们得到一个4 向量。 sapply 将把它们排列成一个 4 x n 矩阵(其中 n 是 cv 的长度),左边的 c 将把该矩阵分解成一个向量。

    c(sapply(cv, c, rep(NA, 3)))
    ##  [1] "A" NA  NA  NA  "B" NA  NA  NA  "C" NA  NA  NA 
    

    【讨论】:

    • 谢谢。我从来没有理解过那些 apply 函数,但我想我需要更加努力。我选择这个作为答案是因为它(在我看来)比另一个更简单。
    【解决方案2】:

    我们可以创建一个带有NA 的向量,并根据seq 生成的位置替换cv 元素。

    n <- 3
    vec <- rep(NA, (n + 1) * length(cv))
    vec[seq(1, length(vec), n + 1)] <- cv
    vec
    #[1] "A" NA  NA  NA  "B" NA  NA  NA  "C" NA  NA  NA 
    

    【讨论】:

      【解决方案3】:

      你可以尝试用matrix()as.vector()玩一下

      v <- as.vector(rbind(cv,matrix(nrow = 3,ncol = length(cv))))
      

      这样

      > v
       [1] "A" NA  NA  NA  "B" NA  NA  NA  "C" NA  NA 
      [12] NA 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-23
        • 2013-12-15
        • 2018-08-25
        • 2019-05-28
        • 1970-01-01
        • 2016-08-16
        • 1970-01-01
        相关资源
        最近更新 更多