2015-11-06 6 views
1

У меня есть .RData файлы, которые хранятся, и я хотел бы сделать функцию, которая загружает .RData, а затем использовать data.frame с именем df, который был в .RData, но имя из data.frame является параметром функции, например:передать имя data.frame функции R

test <-function(rdat,df) 
{ 
load(rdat) 
df <-with(df, subset(df, status=='A')) 
test1(df) 
} 

test1 <-function(df) 
{ 
df$new <- mean(df$old) 
} 

Я не понимаю, как преобразовать строку с именем data.frame в объекте data.frame использовать, я не может передать сам файл data.frame, потому что его не существует. Возможно, есть способ поиска в среде для data.frame с именем df.

Спасибо!

+0

Рассмотрите возможность использования пасты() – Bg1850

+0

Простым решением было бы загрузить de .RData вне функции и передать фактический файл.frame – Leosar

ответ

1

Вы должны использовать get функцию:

В качестве примера того, как попытаться get работы это:

mat <- matrix(letters, ncol=2) 
get('mat') 
# [,1] [,2] 
#[1,] "a" "n" 
#[2,] "b" "o" 
#[3,] "c" "p" 
#[4,] "d" "q" 
#[5,] "e" "r" 
#...and so on 

Так что ваша функция может быть, как это:

test <-function(rdat,df) 
{ 
load(rdat) 
#get will give you the data.frame from a string 
df <- get(df) 
#also you do not need 'with' with subset because subset uses NSE anyway 
#and also using subset inside of functions is error prone because of NSE 
#use simple subsetting which is faster, too 
df <- df[df$status=='A',] 
test1(df) 
} 
Смежные вопросы