【问题标题】:Subsetting a list of different data types子集不同数据类型的列表
【发布时间】:2011-08-11 19:48:03
【问题描述】:

我有一个不同数据类型的列表(因子、data.frames 和向量,所有相同的长度或行数),我想做的是用向量对列表的每个元素进行子集(让我们调用it rows) 表示行名。

如果它是一个 data.frame() 我会:

x <- x[rows,] 

如果它是 vector() 或 factor() 我会:

x <- x[rows]

所以,我一直在玩这个:

x <- lapply(my_list, function(x) ifelse(is.data.frame(x), x[rows,], x[rows]))

那么,我如何实现获取子集数据列表的目标?

【问题讨论】:

  • 你有样本数据吗?

标签: r


【解决方案1】:

我认为这是 YAIEP(Yet Another If Else Problem)。来自?ifelse

ifelse 返回一个与填充的 test 形状相同的值 元素从是或否中选择,具体取决于是否 测试元素是 TRUE 或 FALSE。

看到麻烦了吗?与测试相同的形状。

那么就这样做吧:

l <- list(a = data.frame(x=1:10,y=1:10),b = 1:10, c = factor(letters[1:20]))

rows <- 1:3

fun <- function(x){
    if (is.data.frame(x)){
        x[rows,]
    }
    else{
        x[rows]
    }
}

lapply(l,fun)

【讨论】:

  • /me 拍了拍额头。谢谢J。
猜你喜欢
  • 2017-01-21
  • 1970-01-01
  • 2016-04-04
  • 2011-05-20
  • 2013-10-13
  • 2020-03-30
  • 2020-08-12
  • 2019-09-03
  • 2018-08-05
相关资源
最近更新 更多