Error in as.vector(x, mode) : cannot coerce type 'closure' to vector of type 'any'

想要做一个暴露-反应关系的曲线,然后用的是这个代码

> model<-gam(death.total~s(pm25lag01,k=4,fx=T)+ns(tmean,df=3)+ns(rhum,df=3)+ns(time,df=28)
+ns(pmean,df=3)+as.factor(dow),data=fxdeath,family=quasipoisson)

但是运行下去之后显示的是这个

Error in as.vector(x, mode) : 
  cannot coerce type 'closure' to vector of type 'any'

还请有缘人帮忙看看是为什么,怎么修改好点

完整的一个代码是这样的

library("splines")
library('lubridate')
library('ggplot2')
library('plyr')
library('tsModel')
library(dlnm)
library(splines)
library(mgcv)
setwd("F:/time series/Rfile")
fxdeath0<-read.csv("FZ.csv", header=TRUE, sep=',')
fxdeath=mutate(fxdeath0,t=1:length(date),
               dow=wday(date),
               pm25lag01=runMean(pm25,0:1),    #########定义Lag变量#######
               pm25lag02=runMean(pm25,0:2),  #########定义Lag变量#######
               pm25lag03=runMean(pm25,0:3),
               pm25lag04=runMean(pm25,0:4),
               pm25lag05=runMean(pm25,0:5),
               pm25lag06=runMean(pm25,0:6),
               pm25lag07=runMean(pm25,0:7))
model<-gam(death.total~s(pm25lag01,k=4,fx=T)+ns(tmean,df=3)+ns(rhum,df=3)+ns(time,df=28)+ns(pmean,df=3)+as.factor(dow),data=fxdeath,family=quasipoisson)
plot(model,main = '呼吸系统死亡',xlab = 'PM2.5', cex.axis=1.5,cex.lab=1.5,cex.main=1.5,ylab = 'Log RR',xlim=c(0,70)) 


我可能是你有缘人,解决了问题,还请关注我 (^_^)
该回答引用ChatGPT

根据代码,您正在使用gam()函数来建立一个广义加性模型,其中响应变量是death.total。根据错误提示,可能是与指定的函数ns()和s()有关的参数传递错误。

一种可能的错误是,您可能忘记在某些参数前加上其参数名称。例如,如果您想指定s()的参数名称为pm25lag01和k,则应该写成s(pm25lag01, k = 4, fx = T)。请确保您在每个函数中指定了正确的参数名称和值。

另一个可能的问题是,您可能未正确加载所需的软件包。请确保已加载所有必需的软件包,例如mgcv软件包,这是进行广义加性模型拟合的必需软件包。

最后,您可以尝试逐步运行代码的不同部分,以确定引起错误的哪个函数调用。这可以通过分别运行每个函数调用并检查结果来实现。这样,您可以找到导致错误的代码行,并进行必要的更正。

看一下你的原始数据有没有问题,语句中的变量需要在你的文件里都有才可以,特别是time那个变量,不能是日期格式的变量,因为无法识别

我遇到过同样的问题,是因为我函数里面有不存在的变量名,你可以仔细检查一下