2016-03-29 7 views
0

Я создал функцию, которая вычисляет статистику по различным данным пациентов, а также выводит графики, создает кадры данных, содержащие сводную статистику для каждого пациента.Пользовательская функция экспортирует несколько кадров данных в глобальную среду

Если я копирую и запускаю функцию внутри R, выходы доступны для меня. Тем не менее, теперь я вызываю функцию из отдельного R-скрипта, и кадры данных больше недоступны.

Есть ли способ исправить это?

Например,

test=function(a){ 
    A=a 
    B=2*a 
    C=3*a 
    D=4*a 
    DF=data.frame(A,B,C,D) 
} 

a=c(1,2,3,4) 
test(a) 

Это не возвращает DF, но если бы я типа:

a=c(1,2,3,4) 
    A=a 
    B=2*a 
    C=3*a 
    D=4*a 
    DF=data.frame(A,B,C,D) 

DF Тогда ясно, возвращается. Есть ли простой способ исправить это, чтобы DF стал доступен из функции test?

+0

Если 'test (a)' не возвращает DF, возможно, вы должны добавить строку, подобную 'return (DF)' внутри функции. (Не уверен, что это то, что вы имеете в виду.) – Frank

+0

Это не совсем то, что я имел в виду, но я вижу, как это натолкнулось на этот путь. Я бы хотел, чтобы 'DF' хранился в глобальной среде, а не отображался в консоли. – sym246

+0

Если вы добавите 'return (DF)' внутри функции и используете функцию типа 'DF = test (a)', она должна делать то, что вы ожидаете. Это идиоматический способ сделать что-то в R, вместо того, чтобы создавать функции в качестве побочных эффектов. Если вы действительно хотите, как вы описали, есть оператор '<< -' присваивания, который может работать, но обычно его не поощряют. Связано: http://stackoverflow.com/q/9726705/1191259 – Frank

ответ

0

Try:

test=function(a){ 
    A=a 
    B=2*a 
    C=3*a 
    D=4*a 
    DF=data.frame(A,B,C,D) 
} 

a=c(1,2,3,4) 
df<-test(a) 
print(df) 

Назначая возвращаемое значение функции новой переменной она теперь доступна в глобальном пространстве.