【问题标题】:Assigning value to nested list element using outer list element name使用外部列表元素名称为嵌套列表元素赋值
【发布时间】:2020-12-09 02:45:31
【问题描述】:

我有一个嵌套列表,my_list4。我想使用外部列表元素之一的names() 更改最内部列表元素的值。

这里是my_list4

my_list <- list(elem1 = 1:3, elem2 = 4:6, elem3 = 7:9)
my_list2 <- list(elem1_2 = my_list, elem2_2 = my_list, elem3_2 = my_list)
my_list3 <- list(elem1_3 = my_list2, elem2_3 = my_list2, elem3_3 = my_list2)
my_list4 <- list(Species1 = my_list3, Species2 = my_list3, Species3 = my_list3)

嵌套的lapply 似乎是一个好的开始;

assign_value <- lapply(my_list4, FUN = function(x){
  lapply(x, FUN = function(y){
    lapply(y, FUN = function(z){
      lapply(z, FUN = function(t){
        t = NA
      })
    })
    
  })
})

这会将最里面的元素更改为值NA。我想将值更改为它们对应的物种(即 Species1、Species2、Species3),如 names(my_list4) 所述。

所以,assign_value$Species1$elem1_3$elem1_2$elem1NA,但我希望它是 Species1。 assign_value$Species2$elem1_3$elem1_2$elem1NA 但我希望它是 Species2。

我该怎么做?

【问题讨论】:

    标签: r list apply lapply


    【解决方案1】:

    我们可以使用for 循环来分配

    assign_value <- my_list4
    
    for(nm in names(my_list4)) {
       for(nm2 in names(my_list4[[nm]])) {
         for(nm3 in names(my_list4[[nm]][[nm2]])) {
         assign_value[[nm]][[nm2]][[nm3]] <- nm
         }
       }
    }
    

    -检查

    assign_value$Species1$elem1_3$elem1_2
    #[1] "Species1"
    
    assign_value$Species2$elem1_3$elem1_2
    #[1] "Species2"
    

    【讨论】:

    • t 的值需要是一个物种(Species1, Species2, Species3)。我只是以NA 为例,说明如何使用嵌套的lapply() 来更改所有最内层列表元素的值。最里面的列表元素可以追溯到某个物种。我需要将最里面的列表元素的值作为它们派生的物种。
    • @nateroe 我用 for 循环进行了更新。请检查这是否是您想要的
    猜你喜欢
    • 1970-01-01
    • 2020-01-25
    • 2014-04-09
    • 1970-01-01
    • 2020-07-08
    • 2016-07-02
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多