开发者

Subsetting a list of different data types

I have a list of different data types (factors, data.frames, and vectors, all the same length or number of rows), What I would like to do is subset each element of the list by a vector (let's call it rows) that represents row names.

If it was a data.frame() I would:

x <- x[rows,] 
开发者_如何学运维

If it was a vector() or factor() I would:

x <- x[rows]

So, I've been playing around with this:

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

So, how do I accomplish my goal of getting a list of subsetted data?


I think this is YAIEP (Yet Another If Else Problem). From ?ifelse:

ifelse returns a value with the same shape as test which is filled with elements selected from either yes or no depending on whether the element of test is TRUE or FALSE.

See the trouble? Same shape as test.

So just do this:

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)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜