我有.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。
谢谢!
答案 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)
}