我有这样的感觉,
> 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)
}
它非常缓慢而且不是很优雅,我可能会尝试更高效,但我只是想知道是否有一个简单的解决方法来进行这种转换。