2015-11-06 117 views
1

我有.RData文件存储,我想做一个函数,加载.RData,然后使用一个名为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本身,因为它不存在。也许有一种方法可以在环境中搜索名为df的data.frame。

谢谢!

+0

考虑使用贴() – Bg1850

+0

一个简单的解决方案是将函数de.RData加载到函数之外并传递实际的数据。 – 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) 
} 
相关问题