【问题标题】:To add new value in every element in list in R?在 R 的列表中的每个元素中添加新值?
【发布时间】:2012-11-07 06:00:21
【问题描述】:

这里是list1,只有两个元素——“name”和“age”,每个元素都有两个值,现在我想在每个元素中添加新值,

list1<-list(name=c("bob","john"),age=c(15,17))
list1
$name
[1] "bob"  "john"

$age
[1] 15 17
list1[[1]][3]<-"herry"
list1[[2]][3]<-17
list1
$name
[1] "bob"   "john"  "herry"

$age
[1] 15 17 17

还有更简单的方法吗?

【问题讨论】:

    标签: r list


    【解决方案1】:

    此解决方案适用于任何长度的列表:

    values <- list("herry", 17) # a list of the new values
    list1 <- mapply(append, list1, values, SIMPLIFY = FALSE)
    
    
    # $name
    # [1] "bob"   "john"  "herry"
    
    # $age
    # [1] 15 17 17
    

    【讨论】:

      【解决方案2】:

      rlist 库提供了@Sven Hohenstein 给出的解决方案的替代方案。它不是更好,而是更直观地阅读。如果密钥相同,那么编程恕我直言会容易一些。

      library(rlist) list1 <- list.append(list1, key=value)

      请注意,密钥是不带引号的。因此,在您的示例中,它将是:

      library(rlist) list1 <- list.append(list1, henry=17)

      【讨论】:

        【解决方案3】:

        这有点取决于你想做什么。如果要为列表中的每个元素添加不同的值,我认为最简单的方法是:

        Vec <- c("herry",17,...)
        i=0 
        list1 <- lapply(list1, function(x) {i=i+1 ; append(x,Vec[i])})
        

        如果列表中的每个向量都具有相同的长度,那么您也可以使用一些快捷方式。 如果要为列表中的每个元素添加相同的值:

        list1 <- lapply(list1, function(x) append(x, "NewEl"))
        

        【讨论】:

          猜你喜欢
          • 2020-01-27
          • 1970-01-01
          • 2021-10-04
          • 1970-01-01
          • 2018-02-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-21
          相关资源
          最近更新 更多