【问题标题】:Check list in list in R在 R 中的列表中检查列表
【发布时间】:2017-03-08 07:24:18
【问题描述】:

我有 2 个列表,我想检查第一个列表中的第二个列表是否,如果是,请将字母 "a","b"... 粘贴到第一个列表中的每个元素

list1 <- list("Year","Age","Enrollment","SES","BOE")
list2 <- list("Year","Enrollment","SES")

我尝试使用 lapply

text <- letters[1:length(list2)]
listText<- lapply(list1,function(i) ifelse(i %in% list2,paste(i,text[i],sep="^"),i))

输出错误

> listText
[[1]]
[1] "Year^NA"

[[2]]
[1] "Age"

[[3]]
[1] "Enrollment^NA"

[[4]]
[1] "SES^NA"

[[5]]
[1] "BOE"

这是我想要的输出

[[1]]
[1] "Year^a"

[[2]]
[1] "Age"

[[3]]
[1] "Enrollment^b"

[[4]]
[1] "SES^c"

[[5]]
[1] "BOE"

【问题讨论】:

    标签: r loops lapply


    【解决方案1】:

    我们可以使用match 找到索引,然后使用它对第一个list 进行子集化并粘贴letters

    i1 <- match(unlist(list2), unlist(list1))
    list1[i1] <- paste(list1[i1], letters[seq(length(i1))], sep="^")
    

    【讨论】:

      【解决方案2】:

      您只需要更改为:

      text <- as.character(letters[1:length(list2)])
      names(text) <- unlist(list2)
      

      结果是:

      > listText
      [[1]]
      [1] "Year^a"
      
      [[2]]
      [1] "Age"
      
      [[3]]
      [1] "Enrollment^b"
      
      [[4]]
      [1] "SES^c"
      
      [[5]]
      [1] "BOE"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-13
        • 2021-10-30
        • 1970-01-01
        • 1970-01-01
        • 2012-11-25
        • 2021-06-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多