【问题标题】:Error: 'shuffle' is not an exported object from 'namespace:merTools'错误:“shuffle”不是从“namespace:merTools”导出的对象
【发布时间】:2019-06-21 07:50:15
【问题描述】:

我正在尝试逐行打乱我的数据集,我在包 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"

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

感谢您的帮助。

【问题讨论】:

  • 如果包没有导出该功能,您可以尝试在.GlobalEnvshuffle <- merTools:::shuffle 中进行复制,然后像导出一样使用它。 (我刚刚做了这个,它奏效了。)
  • 嗨@RuiBarradas,是的,我有版本 0.5.0 。所以很困惑,我可以在帮助中找到它,但我不能使用它。我将按照您的建议使用示例,谢谢。
  • 如果您仅为此功能加载 merTools,则可能不值得,因为 base R 已经这样做了。在之前的(已删除)评论中提到了它:data[sample(nrow(data) , ]

标签: r shuffle


【解决方案1】:

可能是未导出的函数

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在cmets中建议的那样,为了重复使用,最好将导出的函数分配到标识符中

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

然后直接应用

shuffle(mtcars)

【讨论】:

  • 或者shuffle &lt;- getFromNamespace("shuffle", "merTools")
【解决方案2】:

所以两个答案都有帮助:

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

还有这个:

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

注意:

两种方式都返回相同的结果。如果使用set.seed 使结果可重现,则可以看到这一点。

set.seed(1234)
mtc1 <- getFromNamespace("shuffle", "merTools")(mtcars)
set.seed(1234)
mtc2 <- mtcars[sample(nrow(mtcars)), ]

identical(mtc1, mtc2)
#[1] TRUE

【讨论】:

    猜你喜欢
    • 2021-03-31
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    相关资源
    最近更新 更多