Error: 'shuffle' is not an exported object from 'namespace:merTools'

Error: 'shuffle' is not an exported object from 'namespace:merTools'

我正在尝试按行打乱我的数据集,我在 merTools 包中找到了函数 shuffle。代码如下所示:

data = merTools::shuffle(my_data)  

但我仍然有这个错误:

Error: 'shuffle' is not an exported object from 'namespace:merTools'

即使我尝试加载包:

library(merTools)
data = shuffle(my_data)

它给出了这个错误:

Error in shuffle(my_data) : could not find function "shuffle"

但我可以在帮助中看到它存在。

感谢您的帮助。

可能是未导出的函数

getAnywhere("shuffle")$where
[1] "namespace:merTools"

不同的是,当有导出函数时,它也会显示包

getAnywhere("mutate")$where
#[1] "package:dplyr"   "namespace:plyr"  "namespace:dplyr"

因此,我们可以从命名空间中获取函数并应用于数据

out <- getFromNamespace("shuffle", "merTools")(mtcars)
head(out, 5)
#                mpg cyl  disp  hp drat   wt qsec vs am gear carb
#Merc 240D      24.4   4 146.7  62 3.69 3.19 20.0  1  0    4    2
#Ferrari Dino   19.7   6 145.0 175 3.62 2.77 15.5  0  1    5    6
#Ford Pantera L 15.8   8 351.0 264 4.22 3.17 14.5  0  1    5    4
#Porsche 914-2  26.0   4 120.3  91 4.43 2.14 16.7  0  1    5    2
#Merc 280C      17.8   6 167.6 123 3.92 3.44 18.9  1  0    4    4

或者@RuiBarradas 在评论中建议,对于重复使用,最好将导出的函数分配到标识符中

shuffle <- getFromNamespace("shuffle", "merTools")

然后直接应用那个

shuffle(mtcars)

所以两个答案都有帮助:

shuffled_data <- getFromNamespace("shuffle", "merTools")(data)  

还有这个:

shuffled_data <- data[sample(nrow(data)) , ]

注:

两种方式return相同的结果。如果使用 set.seed.

使结果可重现,则可以看出这一点
set.seed(1234)
mtc1 <- getFromNamespace("shuffle", "merTools")(mtcars)
set.seed(1234)
mtc2 <- mtcars[sample(nrow(mtcars)), ]

identical(mtc1, mtc2)
#[1] TRUE