Ошибка: «shuffle» не является экспортируемым объектом из «пространства имен: merTools» - PullRequest
2 голосов
/ 21 июня 2019

Я пытаюсь перетасовать свой набор данных по строке, и я нашел функцию shuffle в пакете merTools. Код выглядит так:

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"

но я вижу в справке, что он существует.

Спасибо за любую помощь.

Ответы [ 2 ]

3 голосов
/ 21 июня 2019

Может быть, это не экспортируемая функция

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)
2 голосов
/ 21 июня 2019

Итак, оба ответа помогли:

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
...