将dataframe转换为未命名列表
我有一个像这样的数据帧将dataframe转换为未命名列表,r,list,dataframe,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(
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)
但这有点不同。
有什么建议吗?你可以试试
地图
:
Map(c, df$A, df$B)
[[1]]
[1] 78 12
[[2]]
[1] 23 12
[[3]]
[1] 14 42
[[4]]
[1] 49 94
如果对此感兴趣,可以使用
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])
另一个选项是使用
lappy
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
如果结果列表中没有名字,你会有多迂腐?e、 g.
split(df[,1:2],seq_len(nrow(df))
@joran very。我需要的和我描述的一模一样。list()
会对各种向量做什么……可能有一种更干净的方法:如果我把它拿回来,你可以做mapply(c,df$a,df$B,SIMPLIFY=FALSE)
如果你真的不能得到这些名称。@stopface-Huh?双打和什么有什么关系?