Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
is.data.frame(数据)中出错:对象';数据='';找不到_R_Function_Parameter Passing_Environment_Gam - Fatal编程技术网

is.data.frame(数据)中出错:对象';数据='';找不到

is.data.frame(数据)中出错:对象';数据='';找不到,r,function,parameter-passing,environment,gam,R,Function,Parameter Passing,Environment,Gam,我对r很陌生,正在努力编写一个函数:我正在尝试制作一个适合GAM的函数。我找到了一个线性模型的例子,效果非常好。然而,尝试对GAM使用相同的结构会给我带来一个错误 线性模型: library(mgcv) library(ggplot2) theme_set(theme_bw()) set.seed(100) dd <- data.frame(x=1:100,y=round(rnorm(100,mean=100),1), z=round(runif(100,1,4),1)) lm(y~x,

我对r很陌生,正在努力编写一个函数:我正在尝试制作一个适合GAM的函数。我找到了一个线性模型的例子,效果非常好。然而,尝试对GAM使用相同的结构会给我带来一个错误

线性模型:

library(mgcv)
library(ggplot2)
theme_set(theme_bw())
set.seed(100)
dd <- data.frame(x=1:100,y=round(rnorm(100,mean=100),1), z=round(runif(100,1,4),1))
lm(y~x, weights=z, data=dd)$call
lm(formula = y ~ x, data = dd, weights = z)

f2 <- function(f,w,d){
   do.call("lm", list(formula=as.formula(f), weights=as.name(w), data=as.name(d)))
 }
 f2("y~x", "z", "dd")$call
lm(formula = y ~ x, data = dd, weights = z)
库(mgcv)
图书馆(GG2)
theme_set(theme_bw())
种子集(100)
dd呼叫:


什么是
gam
函数,什么包?为什么不干脆
do.call(“gam”,list(formula=as.formula(f),method=m,select=s,data=d))
f2(“y~s(x,k=64,bs='ad'),'REML',TRUE,dd)
?对不起,我刚刚添加了包。GAM是一种广义加法模型。在我的例子中,我有一个散点图,GAM平滑了y值,所以我可以看到x和y之间的关系,这是非线性的。太好了,已经成功了!谢谢,谢谢!另一个问题(可能是非常愚蠢的问题):我如何返回结果以便在代码中使用它?
set.seed(100)
dd <- data.frame(x=1:100,y=round(rnorm(100,mean=100),1))
gam(y ~ s(x, k=64, bs='ad'), data = dd, method = 'REML', select = 'TRUE')$call
gam(formula = y ~ s(x, k=64, bs='ad'), data = dd, method = 'REML', select = 'TRUE')

 f2 <- function(f,m,s,d){
    do.call("gam", list(formula=as.formula(f),method=as.name(m),select=as.name(s),data=as.name(d)))
  }

f2("y ~ s(x, k=64, bs='ad')", "method = 'REML'", "select = 'TRUE'", "data = dd")$call

# Error in is.data.frame(data) : object 'data = dd' not found occurs

gam(formula = y ~ s(x, k = 64, bs = "ad"), data = dd)
f2 <- function(f, m, s, d){
    do.call("gam", list(formula=as.formula(f),method = "REML",select = s, data = as.name(d)))
}
f2("y ~ s(x, k=64, bs='ad')", "REML", TRUE, d = "dd")$call
gam(formula = y ~ s(x, k = 64, bs = "ad"), data = dd, method = "REML", 
    select = TRUE)