2015-05-13 2 views
5

Как избежать «не удалось найти функцию»% dopar% «» в функции пакета, когда только импорт (не зависит) foreach в ОПИСАНИЕ пакет? есть способ, как foreach ::% dopar%, поскольку я использую foreach :: foreach в функции? Спасибо.Как использовать% dopar% когда только импорт foreach в ОПИСАНИИ пакета

Код типа:

В функции

foreach::foreach(1:9) %dopar% { 

...} 

В ОПИСАНИЕ

Imports: 
    Matrix, 
    parallel, 
    foreach, 
    doParallel 

ответ

3

Вам нужно использовать кавычку: foreach::`%dopar%` (или котировки foreach::"%dopar%" также будет работать).

+1

Не могли бы вы уточнить, немного больше о том, чтобы явно вызвать% dopar%? Я пытаюсь запустить следующее, которое не работает. 'foreach :: foreach (i = 1: 9, .combine =" + ") foreach :: \'% dopar% \ '{i}' , и я пробовал различную комбинацию с обратными окнами, но обычно это дает ошибка «неожиданного символа». Благодаря! –

+0

@KevinZen Я не уверен, как воспроизвести эту ошибку, и я не помню, чтобы когда-либо ее получал. Вы получаете то же самое, если используете кавычки? Как насчет определения псевдонима типа '\'% dopar% \ '<- foreach :: \'% dopar% \ '', а затем просто использовать это? – konvas

+0

Да, если я попытаюсь определить эту функцию явно, не используя Roxygen2, ни обратные ссылки, ни кавычки не будут работать. Я понял, что мне не нужно беспокоиться о 'foreach ::% dopar%' при использовании Roxygen2. Он работал отлично с помощью 'import (foreach)' –

4

@Kevin Zen,

У меня была такая же проблема, но я думаю, я просто решить его с помощью поля «importFrom» в файле имен. Я использую Roxygen2 к документу, так что я просто включил тег:

#' @importFrom foreach %dopar% 

с функцией Еогеасп называется в Это создало поле в файле имен, как такой:.

importFrom(foreach,"%dopar%") 

так, если вы Арен Используя Roxygen2, вы можете просто разместить эту строку в своем пространстве имен, и это тоже должно сделать трюк.

Это должно помешать проверке крана от жалобы. Однако, как только вы попытаетесь запустить код на компьютере, на котором еще не пакет «Еогеасп» загружен и присоединен через:

library(foreach) 

вы получите сообщение, что% dopar% не найден, если «Еогеасп »указана в разделе« Импорт », а не« Зависит »от вашего файла DESCRIPTION. Поэтому убедитесь, что foreach указан в поле «Зависимости».

3

Следующие работали для меня. Определить локальный %do% или %dopar% следующим

`%dopar%` <- foreach::`%dopar%` 
`%do%` <- foreach::`%do%` 

Тогда вы должны быть в состоянии запустить

foreach::foreach(i = 1:9, .combine = "+") %dopar% {i} 
foreach::foreach(i = 1:9, .combine = "+") %do% {i} 
+0

Это решение работает для меня, а остальные здесь нет. Благодарю. –

 Смежные вопросы

  • Нет связанных вопросов^_^