将列表中的列转换为R中的数据框 [英] Convert columns in a list to a data frame in R

查看:14
本文介绍了将列表中的列转换为R中的数据框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下使用R创建的列表

set.seed(326581)
X1=rnorm(10,0,1)
Y1=rnorm(10,0,2)
data=data.frame(X1,Y1)

lst <- replicate(
  100,
  df.smpl <- data %>% sample_n(10, replace = T),
  simplify = FALSE)

此列表表示100个样本,其中每个样本有2列(X,Y),样本大小为10。

我需要将所有X列分离到一个数据框中,将Y列分离到一个数据框中。最后,我应该有2个数据框,每个数据框有100列和10行。

我尝试了此循环,

new1=c()
new2=c()
for(i in 1:100)
{
  new1[i]=lst[[i]]$X
  new2[i]=lst[[i]]$Y
}

但它不起作用。有人能告诉我这个错误吗?

推荐答案

以下是tidyverse的一个选项,我们transpose将对象分别绑定到list的‘X1’和‘Y1’,然后绑定map中的列,以创建tibblelist

library(tidyverse)
out <- transpose(lst) %>% 
              map(bind_cols)

最好将其保存在list中,但如果我们想要单独的对象

outx <- out[[1]]
outy <- out[[2]]
dim(outx)
#[1]  10 100
dim(outy)
#[1]  10 100

或使用lapply中的base R

进行提取
data.frame(lapply(lst, `[`, 'X1'))
data.frame(lapply(lst, `[`, 'Y1'))

这篇关于将列表中的列转换为R中的数据框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆