2013-05-20 2 views
0

Есть ли способ в R передать значения некоторых переменных, например строк, определенных в скрипте, на другой сценарий, который используется, чтобы последний мог использовать их, не объявляя их? Например:Передача значений в исходный файл в R

some R code 
... 
... 
var1 <- "some string" 
var2 <- "some param" 

source("header.r") 

В header.rlist() имеет слоты с именами строк в var1 и var2:

tabl <- alldata.list[["some string"]][["some param"]] 

Такое, что, когда я бегу оригинальный сценарий и вызвать заголовок, tabl будет правильно?

Кроме того, существует ограничение на количество и тип элементов, которые можно передать?

+3

Первое, что вам нужно сделать, это, вероятно, прочитать документацию в '? Source' и посмотреть, разрешает ли' локальный' аргумент вашей проблемы. – joran

+2

Чтобы добавить к комментарию @ joran, любые переменные в родительском скрипте будут видны в исходном скрипте, поэтому у вас нет «пропустить» что угодно. –

+0

@joran Я просмотрел документ перед публикацией, давая местный беглый взгляд, и я понял, что это означает, что 'source' будет искать файл в _directory_, определенный' local'. – avg

ответ

2

Когда вы используете source для загрузки файла .R, это последовательно запускает строки в этом скрипте, объединяя все в этом скрипте в ваш текущий сеанс R. С этого момента все переменные и функции доступны.

Чтобы сделать ваш код более удобочитаемым/поддерживаемым/отлаживаемым, хотя я бы рекомендовал не использовать переменные для связи между исходными файлами. Вместо этого я буду использовать функции. На практике для меня это означает, что у меня есть один или несколько файлов, которые содержат вспомогательные функции (вроде пакета-света). Эти вспомогательные функции абстрагируют некоторые функции, которые вам нужны в главном скрипте, что делает его более коротким и более точным. Цель состоит в том, чтобы создать основной сценарий, который примерно заполняет экран. Таким образом, вы можете легко понять основную идею скрипта, любые детали можно найти в вспомогательных функциях.

Использование функций делает основной сценарий автономным и не зависит от того, что происходит в исполняемом коде в других исходных файлах. Это требует меньше рассуждений от вас самих и других, чтобы определить, что именно делает скрипт, поскольку вам просто нужно читать 40-50 строк кода.

+0

спасибо за ответ и более общие комментарии. – avg