【发布时间】:2016-06-14 16:27:50
【问题描述】:
我有一个数据框 df 看起来像这样
A B C D
1 78 12 43 12
2 23 12 42 13
3 14 42 11 99
4 49 94 27 72
我需要将前两列转换成一个看起来完全一样的列表:
[[1]]
[1] 78 12
[[2]]
[1] 23 12
[[3]]
[1] 14 42
[[4]]
[1] 49 94
基本上是什么
list(c(78, 12), c(23, 12), c(14, 42), c(49, 94)
会的。我试过这个
lapply(as.list(1:dim(df)[1]), function(x) df[x[1],])
还有
lapply(as.list(1:nrow(df)), function(x) df)
但这略有不同。 有什么建议吗?
【问题讨论】:
-
对于结果列表中没有名字的问题,你会有多迂腐?例如
split(df[,1:2],seq_len(nrow(df))) -
@joran 非常。我完全需要它,就像我描述的那样。
list()会对各种向量做什么... -
可能有更简洁的方法:
out <- lapply(split(df[,1:2], seq(nrow(df))), function(x) as.numeric(x)); names(out) <- NULL -
我收回来,如果你实在找不到名字,你可以
mapply(c,df$A,df$B,SIMPLIFY = FALSE)。 -
@Stophface 嗯?双打有什么关系?