将data.frame名称传递给函数R.

时间:2015-11-06 23:40:12

标签: r function dataframe

我有.RData文件存储,我想做一个加载.RData的函数,然后使用.RData中名为df的data.frame,但data.frame的名称是一个参数功能,像这样:

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本身,因为它没有&#39;存在。也许有一种方法可以在环境中搜索名为df的data.frame。

谢谢!

1 个答案:

答案 0 :(得分: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)
}