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)][]