如何使用一列作为列表名称将数据框转换为R中的列表?

时间:2016-11-27 18:56:56

标签: r

我有这样的感觉,

> ex <- data.frame(a = 1:20, b = 20:1, c = c(letters[1:10],letters[1:10]))
> head(ex, n = 3)
    a  b c
  1 1 20 a
  2 2 19 b
  3 3 18 c

我希望像这样将其转换为smth

> head(df2list2(df = ex,namecol = "c"), n = 2)
$a
    a  b
1   1 20
11 11 10

$b
    a  b
2   2 19
12 12  9

我在此函数中使用的丑陋代码如下:

df2list2 <- function(df,namecol){
 nc = which(colnames(df)==namecol)
 nl = list()
 names = unique(df[,nc])
 for (i in names){
   tmp = df[df[,nc] == i,]
   nl[[i]] = tmp[,-nc]
 }
 return(nl)
}

它非常缓慢而且不是很优雅,我可能会尝试更高效,但我只是想知道是否有一个简单的解决方法来进行这种转换。

0 个答案:

没有答案