列出用于R函数输出的许多data.frames

时间:2019-05-10 02:08:02

标签: r list function dataframe

我想知道如何让下面的函数输出length(n.x)data.frame的列表,每个data.frame中都有n.x[i]行。

x是向量,n.x确定要从x中提取的元素数量,而length(n.x)确定要成为{{1 }}。

例如,如果data.framex = 1:5,我希望n.x = c(2, 3)的前两个元素(即x1)成为一个{ {1}},以及2的后3个元素(即data.frame)成为另一个x。然后,我希望将这两个3, 4, 5作为列表输出。

更新:某些data.frame可以有data.frame,有些x。在将呼叫另存为对象(例如long= T)之后,用户可以使用long= F提取要提取aa$study1$long的{​​{1}} x的{​​{1}}个?

long = T

1 个答案:

答案 0 :(得分:1)

我们可以使用'n.x'创建分组向量,以将{.1} s的data.frame split s中list

data.frame

如果我们需要再传递一个向量('nn')并将其分配为行名

foo <- function(x, n.x, long) {


    d1 <- data.frame(a = x, long)

    lst1 <- split(d1, list(rep(seq_along(n.x), n.x), long), drop = TRUE)
    names(lst1) <- paste0("Study", seq_along(lst1))
    lst1 <- lapply(lst1, `row.names<-`, NULL)
    lapply(lst1, function(x) setNames(x, c("a", c("short", "long")[x$long[1] +1])))

   } 



foo(1:4, c(1, 2, 1), c(TRUE, FALSE, TRUE, TRUE))
#$Study1
#  a short
#1 2 FALSE

#$Study2
#  a long
#1 1 TRUE

#$Study3
#  a long
#1 3 TRUE

#$Study4
#  a long
#1 4 TRUE