2013-07-18 146 views
-1

我想改变dataframes的列表列出清单,以便能够添加和删除元素从dataframes.I想要的东西,如落得:如何将数据框列表转换为列表列表?

例子:

> list <- list(list("p"=runif(5), 
        "n"=round(1000*rnorm(5,5,2))), 
       list("p"=runif(10), 
        "n"=round(1000*rnorm(10,5,2))), 
       list("p"=runif(15), 
        "n"=round(1000*rnorm(15,5,2))) 
) 
> class(list[[1]]) 
[1] "list" 
+1

你做的理由没有解释清楚。 – Roland

回答

1

由于你的问题是不够清楚,我,我想你有这样的事情:

List <- list(data.frame(a=1:4, b=4:1), 
     data.frame(A=2:6, B=6:2)) 

这是data.frames的列表,你wnat它是一个列表:

unlist(lapply(List, as.list), recursive=FALSE) 

或列表

lapply(List, as.list) 
1

一个data.frame列表实际上是一个列表。你只需要删除班级。

mylist <- list(df1=data.frame(a=1:10, b=11:20),df2=data.frame(a=c("a","b"), b=c("c","d"))) 
str(mylist) 
# List of 2 
# $ df1:'data.frame': 10 obs. of 2 variables: 
# ..$ a: int [1:10] 1 2 3 4 5 6 7 8 9 10 
# ..$ b: int [1:10] 11 12 13 14 15 16 17 18 19 20 
# $ df2:'data.frame': 2 obs. of 2 variables: 
# ..$ a: Factor w/ 2 levels "a","b": 1 2 
# ..$ b: Factor w/ 2 levels "c","d": 1 2 

mylist2 <- lapply(mylist, unclass) 
str(mylist2) 
# List of 2 
# $ df1:List of 2 
# ..$ a: int [1:10] 1 2 3 4 5 6 7 8 9 10 
# ..$ b: int [1:10] 11 12 13 14 15 16 17 18 19 20 
# ..- attr(*, "row.names")= int [1:10] 1 2 3 4 5 6 7 8 9 10 
# $ df2:List of 2 
# ..$ a: Factor w/ 2 levels "a","b": 1 2 
# ..$ b: Factor w/ 2 levels "c","d": 1 2 
# ..- attr(*, "row.names")= int [1:2] 1 2