r - 将列表中的列转换为 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”和“Y1s”,然后将其中的列绑定以map
创建slist
tibble
library(tidyverse)
out <- transpose(lst) %>%
map(bind_cols)
最好将其保存在 a 中list
,但如果我们想要单独的对象
outx <- out[[1]]
outy <- out[[2]]
dim(outx)
#[1] 10 100
dim(outy)
#[1] 10 100
或者使用lapply
from进行提取base R
data.frame(lapply(lst, `[`, 'X1'))
data.frame(lapply(lst, `[`, 'Y1'))
推荐阅读
- xcode - 为什么我不断收到 rsync 错误:“Command PhaseScriptExecution failed with nonzero exit code”
- python - 向熊猫数据框添加行,其中列包含应该是另一行的附加值?
- visual-studio-code - 是否可以将 package.json 文件中 vscode 片段的路径更改为 url 链接
- c# - 由于这一行代码,控制台中的颜色混乱了
- python - 为什么discord.py中会出现这个错误?
- kotlin - 是否可以在 Kotlin 中使用 vararg 实现序列编程?
- powershell - Invoke-RestMethod 等效于 curl 的 --connect-to?
- php - 数据库的免费主机
- json - Delphi 7中的Json图像数组
- javascript - Vanilla JS - 制作静态图表