代码之家  ›  专栏  ›  技术社区  ›  Maël

用位置列表中的索引替换向量

  •  2
  • Maël  · 技术社区  · 3 年前

    我有一个值向量:

    y=c(2,3,4,4,3,2,1,1)
    

    和位置向量列表:

    l=list(c(1,2),c(2,3),c(3,4),c(4,5),c(5,6),c(6,7),c(7,8),c(8,1))
    

    y 由NAs(或其他)为列表中的每个元素 l .

    预期输出是一个长度列表 length(l) :

    [[1]]
    [1] NA NA  4  4  3  2  1  1
    
    [[2]]
    [1]  2 NA NA  4  3  2  1  1
    
    [[3]]
    [1]  2  3 NA NA  3  2  1  1
    
    [[4]]
    [1]  2  3  4 NA NA  2  1  1
    
    [[5]]
    [1]  2  3  4  4 NA NA  1  1
    
    [[6]]
    [1]  2  3  4  4  3 NA NA  1
    
    [[7]]
    [1]  2  3  4  4  3  2 NA NA
    
    [[8]]
    [1] NA  3  4  4  3  2  1 NA
    

    首选碱性R溶液。

    2 回复  |  直到 3 年前
        1
  •  4
  •   akrun    3 年前

    我们可以绕着地球转一圈 list replace NA

    lapply(l, \(x) replace(y, x, NA))
    [[1]]
    [1] NA NA  4  4  3  2  1  1
    
    [[2]]
    [1]  2 NA NA  4  3  2  1  1
    
    [[3]]
    [1]  2  3 NA NA  3  2  1  1
    
    [[4]]
    [1]  2  3  4 NA NA  2  1  1
    
    [[5]]
    [1]  2  3  4  4 NA NA  1  1
    
    [[6]]
    [1]  2  3  4  4  3 NA NA  1
    
    [[7]]
    [1]  2  3  4  4  3  2 NA NA
    
    [[8]]
    [1] NA  3  4  4  3  2  1 NA
    

    is.na<-

    lapply(l, `is.na<-`, x = y)
    [[1]]
    [1] NA NA  4  4  3  2  1  1
    
    [[2]]
    [1]  2 NA NA  4  3  2  1  1
    
    [[3]]
    [1]  2  3 NA NA  3  2  1  1
    
    [[4]]
    [1]  2  3  4 NA NA  2  1  1
    
    [[5]]
    [1]  2  3  4  4 NA NA  1  1
    
    [[6]]
    [1]  2  3  4  4  3 NA NA  1
    
    [[7]]
    [1]  2  3  4  4  3  2 NA NA
    
    [[8]]
    [1] NA  3  4  4  3  2  1 NA
    
        2
  •  2
  •   Rui Barradas    3 年前

    下面是一个基本的R解决方案,其中包含 lapply

    lapply(l, \(x) {is.na(y) <- x; y})
    #[[1]]
    #[1] NA NA  4  4  3  2  1  1
    #
    #[[2]]
    #[1]  2 NA NA  4  3  2  1  1
    #
    #[[3]]
    #[1]  2  3 NA NA  3  2  1  1
    #
    #[[4]]
    #[1]  2  3  4 NA NA  2  1  1
    #
    #[[5]]
    #[1]  2  3  4  4 NA NA  1  1
    #
    #[[6]]
    #[1]  2  3  4  4  3 NA NA  1
    #
    #[[7]]
    #[1]  2  3  4  4  3  2 NA NA
    #
    #[[8]]
    #[1] NA  3  4  4  3  2  1 NA