R-data.table示例复制
我试图从我的样本中创建几个随机子样本 所以,我在想类似的事情R-data.table示例复制,r,data.table,R,Data.table,我试图从我的样本中创建几个随机子样本 所以,我在想类似的事情 library(data.table) replicate(2, mtcars[, .SD[sample(.N,3)], ], simplify=F ) library(dplyr) replicate(2, mtcars[, .SD[sample(.N,3)], ], simplify=F ) %>% bind_rows() 这给了我两个清单 [[1]] mpg cyl disp hp drat
library(data.table)
replicate(2, mtcars[, .SD[sample(.N,3)], ], simplify=F )
library(dplyr)
replicate(2, mtcars[, .SD[sample(.N,3)], ], simplify=F ) %>% bind_rows()
这给了我两个清单
[[1]]
mpg cyl disp hp drat wt qsec vs am gear carb
1: 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
2: 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
3: 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
[[2]]
mpg cyl disp hp drat wt qsec vs am gear carb
1: 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
2: 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
3: 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
我想知道是否可以绑定
,但要使用一个采样标识符,这取决于复制的数量
mpg cyl disp hp drat wt qsec vs am gear carb replication
1: 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 1
2: 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 1
3: 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3 1
4: 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 2
5: 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 2
6: 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 2
差不多
library(data.table)
replicate(2, mtcars[, .SD[sample(.N,3)], ], simplify=F )
library(dplyr)
replicate(2, mtcars[, .SD[sample(.N,3)], ], simplify=F ) %>% bind_rows()
但是指示复制的数量(当然要避免循环
)
谢谢在
bind\u行中有.id
选项
replicate(2, as.data.table(mtcars)[sample(.N,3)], simplify=FALSE ) %>%
bind_rows(., .id = 'replication')
您是否打算将其保留为一个
列表
或单个数据.frame如果您使用lappy(序列(2),函数(i)…。
您可以使用i
来构造一个新列。@akrun single data frame感谢您以这种方式使用data.table
是最快的方式吗?还是有别的办法?thanks@giacomoV对于data.table
,有rbindlist
和idcol
选项。我以为你想把dplyr
和data.table混为一谈,例如%%>%rbindlist(,idcol=“replication”)
哦,对不起,不,我弄错了,因为我不知道如何完全处理data.table。您介意同时发布完整的数据表解决方案吗?thanks@giacomoV我猜这rbindlist(lappy(1:2,函数(I)作为.data.table(mtcars)[示例(1:N,3)]),idcol=“replication”)
就是其中之一option@giacomoV在行号向量上进行复制可能更快:data.table(mtcars)[c(复制(2,样本(.N,3))][,g:=rep(1:2,每个=3)][]