【问题标题】:Find dataframe in list containing specific rowname in R在包含 R 中特定行名的列表中查找数据框
【发布时间】:2012-08-31 16:10:11
【问题描述】:

我有一个数据框列表。有没有办法找到包含特定行名的数据帧的索引?

例如,假设我有

mylist<-list(
          data.frame(c(1,1),c(1,1),row.names = c('row1','row2')),
          data.frame(c(1,1),c(1,1),row.names = c('row3','row4'))
             )

我想找到row3 在哪里,查询将返回 2,因为它在我列表中的第二个数据框中。

【问题讨论】:

    标签: r list row dataframe


    【解决方案1】:

    一种方式:

    sapply(mylist, function(x)"row3" %in% rownames(x))
    [1] FALSE  TRUE
    

    或同一主题的变体,如果找不到行名,则返回NA,如果可以,则返回行号:

    sapply(mylist, function(x)match("row3", rownames(x)))
    [1] NA  1
    

    【讨论】:

    • 谢谢,为了获得列表中数据框的数量,我做了 which(sapply(mylist, function(x)"row3" %in% rownames(x)))
    【解决方案2】:

    试试

    > lapply(lapply(mylist,rownames),function(x){any(grepl('row3',x))})
    [[1]]
    [1] FALSE
    
    [[2]]
    [1] TRUE
    
    #> seq_along(mylist)[sapply(lapply(mylist,rownames),function(x){any(grepl('row3',x))})]
    #[1] 2
    #> 
    

    【讨论】:

    • 如果您使用 %in%,则无需遍历行名,请参阅 Andrie 的回答。
    猜你喜欢
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 2020-05-28
    • 2019-04-04
    • 2021-08-18
    • 2019-10-11
    • 2020-08-30
    • 2020-06-01
    相关资源
    最近更新 更多