【问题标题】:Inserting elements to vector with NA's if needed如果需要,使用 NA 将元素插入到向量中
【发布时间】:2020-11-15 12:04:25
【问题描述】:

让我们想象一下矢量c(2,3)。我想添加到这个向量编号 4 但在第四位(所以第三个应该是空的,用 NA 填充)

要向向量添加数字,我们可以简单地使用append(c(2,3),4,after=3)。但是我们最终会得到向量 c(2,3,4) 而不是 c(2,3,NA,4) 我知道这是预期的,因为这是 append 函数的工作方式,但是有什么简单的方法可以解决这个问题吗?

【问题讨论】:

    标签: r vector


    【解决方案1】:

    你可以使用这个功能:

    append_at_k <- function(vec, k, value) {
      vec[k] <- value
      vec
    }
    
    append_at_k(c(2,3), 4, 4)
    #[1]  2  3 NA  4
    

    【讨论】:

      【解决方案2】:

      您可以编写自己的函数,其签名与 append 相同,例如:

      myAppend <- function(x,values,after=length(x)) {
        if(after < length(x)) stop("after must be at least length(x)")
        c(x,rep(NA,after-length(x)),values)
      }
      

      【讨论】:

        【解决方案3】:

        这行得通吗:

        insert_num <- function(vec, num, pos){
          if(pos == (length(vec)+1)) {vec[pos] = num}
          else{
            vec[(length(vec)+1):(pos-1)] = NA
            vec[pos] = num
          }
          vec
        }
        
        v
        [1] 2 3
        insert_num(v,4,3)
        [1] 2 3 4
        insert_num(v,4,5)
        [1]  2  3 NA NA  4
        

        【讨论】:

          【解决方案4】:

          我们可以使用replace

          append_at_k <- function(vec, k, value) {
              replace(vec, k, value)
           }
          
          append_at_k(c(2,3), 4, 4)
          #[1]  2  3 NA  4
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-12-02
            • 1970-01-01
            • 1970-01-01
            • 2021-02-10
            • 1970-01-01
            • 1970-01-01
            • 2012-04-30
            • 1970-01-01
            相关资源
            最近更新 更多