#r #rstudio #local #sapply
#r #rstudio #Местные новости #sapply
Вопрос:
У меня есть три скрипта в одном каталоге: main.R, func1.R, func2.R. Коды
главный.R:
rm(list = ls())
x <- 0
filelist <- c("func2.R", "func1.R")
print(ls())
sapply(filelist, source)
print(ls())
func1.R:
x1 <- 1
функция 2.R:
x2 <- 2
Если я запущу main.R в RStudio выходные данные будут
[1] "filelist" "x"
[1] "filelist" "x" "x1" "x2"
Это означает, что результаты func1.R и func2.R экспортируются в глобальную среду. Однако, если я отправлю main.R как локальное задание в RStudio, результат будет
[1] "filelist" "x"
[1] "filelist" "x"
Я знаю, что могу решить эту проблему, используя цикл для source
каждого скрипта отдельно. Мне просто любопытно, почему sapply
функция ведет себя по-разному в консоли и локальном задании, и как заставить ее работать, если я настаиваю на использовании sapply
source
всех сценариев вместе? Спасибо.
Ответ №1:
Я думаю, что существует недопонимание того, что подразумевается под локальным заданием. Функция run local job — это совершенно новая функция от RStudio, которая позволяет пользователю запускать задание и запускать его где-то локально, чтобы оно не зависело от собственного сеанса пользователя. Основная идея здесь заключается в том, что если у вас есть какая-то сложная с точки зрения вычислений работа, вы запускаете ее на какой-то другой машине, а затем собираете результаты, когда они выполнены. Если вы хотите, чтобы сценарии запускались в вашем собственном сеансе, вы должны использовать классическую source
команду
Комментарии:
1. Спасибо за ваш ответ, но я все еще немного в замешательстве. Вы имеете
source
в виду, что функция не может быть использована в скрипте, представленном в локальном задании? У меня есть основной скрипт, и время выполнения основного скрипта составляет более 24 часов, поэтому я попытался использовать локальное задание. Однако все функции, используемые в основном скрипте, определены в нескольких других R-скриптах, поэтому мне нужно использоватьsource
function в основном скрипте. Разве я не могу использовать локальное задание, если не помещу весь код в один файл сценария? Спасибо.