将数据帧转换为未命名列表

时间:2016-06-14 16:27:51

标签: r list dataframe

我的数据框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)

但那略有不同。 有什么建议吗?

3 个答案:

答案 0 :(得分:5)

您可以尝试Map

Map(c, df$A, df$B)
[[1]]
[1] 78 12

[[2]]
[1] 23 12

[[3]]
[1] 14 42

[[4]]
[1] 49 94

答案 1 :(得分:0)

如果感兴趣,可以使用foreach包完成此操作:

library(foreach)
foreach(i=seq.int(nrow(df))) %do% (c(df[[i]][1], df[[i]][2]))

foreach默认返回一个列表。代码沿着行向下运行并从第一列和第二列中提取元素。

更清晰的阅读版本:

foreach(i=seq.int(nrow(df))) %do% (df[[i]][1:2])

答案 2 :(得分:0)

另一种选择是使用lapply

lapply(seq_len(nrow(df1)), function(i) unlist(df1[i, 1:2], use.names=FALSE))
#[[1]]
#[1] 78 12

#[[2]]
#[1] 23 12

#[[3]]
#[1] 14 42

#[[4]]
#[1] 49 94