我觉得这是微不足道的,对于提出如此简单的问题,我深表歉意,但对于以下问题,我将不胜感激:我有一个需要两个参数的函数:
myfun <- function(fm, name){
...
}
我可以通过dat <- eval(fm$call$data)
函数内部获取要使用的数据框。在里面dat
,有一个名称与第二个参数相同的变量,即有一个变量dat$name
(请注意,函数的第二个参数不包括对数据框的引用,即名称不等于dat$name
但只是name
),我想使用该变量。
问:我该怎么做?
具体示例: 以下为示例:
air <- data(airquality)
fm <- lm(Ozone ~ Solar.R, data=airquality)
myfun <- function(fm, name){
df <- eval(fm$call$data)
name[1:5]
}
myfun(fm, Temp)
此函数的目的是显示name
数据框中已用于拟合的变量的前五个元素fm
。但是,name
不被识别为相应数据框中的变量。with(df, ...)
用或df$name
等效的解决方案包装它都不能解决问题。我如何让它工作?
编辑: 我已经玩得更远了,但它仍然无法正常工作。在受到一些评论的启发后,我认为应该这样做:
myfun <- function(fm, name){
df <- as.character(fm$call$data)
varname <- deparse(substitute(name))
d1 <- paste(df, "$", sep="")
d2 <- paste(d1, varname, sep="")
get(d2)[1:5]
}
myfun(fm, Temp)
这会产生一个名为 的字符串airquality$Temp
,但我收到以下错误:
Error in get(d2): object 'airquality$Temp' not found.
我希望通过构造一个字符串,该字符串为我提供了变量的名称,包括我可以使用的数据框访问它get
,但仍然无法正常工作......: (