РЕДАКТИРОВАТЬ : Этот ответ устарел, см. обновленную версию .
В моем пакете R Я улучшил sample
, так что теперь он ведет себя, как и ожидалось, также для фреймов данных:
library(devtools); install_github('kimisc', 'krlmlr')
library(kimisc)
example(sample.data.frame)
smpl..> set.seed(42)
smpl..> sample(data.frame(a=c(1,2,3), b=c(4,5,6),
row.names=c('a', 'b', 'c')), 10, replace=TRUE)
a b
c 3 6
c.1 3 6
a 1 4
c.2 3 6
b 2 5
b.1 2 5
c.3 3 6
a.1 1 4
b.2 2 5
c.4 3 6
Это достигается путем превращения sample
в универсальный метод S3 и обеспечения необходимой (тривиальной) функциональности в функции. Звонок на setMethod
все исправляет. К исходной реализации все еще можно получить доступ через base::sample
.