将列表中的列转换为R中的数据帧
我有以下使用R创建的列表将列表中的列转换为R中的数据帧,r,simulation,R,Simulation,我有以下使用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) 但它不起作用。有人能告诉我找出错误吗 这里有一个使用tidyverse的选项,我们将对象分别转置到'X1'和'Y1s
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)
但它不起作用。有人能告诉我找出错误吗 这里有一个使用
tidyverse
的选项,我们将对象分别转置到'X1'和'Y1s'的list
,然后绑定inmap
中的列,以创建tibble
的列表
library(tidyverse)
out <- transpose(lst) %>%
map(bind_cols)
或者使用lappy
从base R
data.frame(lapply(lst, `[`, 'X1'))
data.frame(lapply(lst, `[`, 'Y1'))
使用do.call
cbind
,将它们合并成一个数据帧,然后我们将数据帧拆分以获得预期的输出
s=do.call("cbind", lst)
Y=s[,seq(2,200,2)]
X=s[,seq(1,200,2)]
谢谢你的回复。我对R数据类型有一点了解。我需要数据类型中的最终答案,类似于通过以下代码replicate(n=10,rnorm(30,0,1))生成的数据类型
。可以这样做吗?只要用as.matrix
data.frame(lapply(lst, `[`, 'X1'))
data.frame(lapply(lst, `[`, 'Y1'))
s=do.call("cbind", lst)
Y=s[,seq(2,200,2)]
X=s[,seq(1,200,2)]