r - splineDesign(Aknots,x,ord)中的错误:“列表”对象不能被强制输入“双”
问题描述
在下面的循环中,我在创建 bvar 对象时出错:
bvar <- do.call(onebasis,c(list(x=tmaxproj[,j+1]),argvar)) 其中 tmaxproj 有一个日期列和 6 个不同的全球气候模型最高温度值。运行循环时出现以下错误:
splineDesign(Aknots,x,ord)中的错误:“列表”对象不能被强制输入“双”
所以我尝试将 tmaxproj 变量转换为也不起作用的字符:
FUN(X[[i]], ...) 中的错误:仅在具有所有类似数字的变量的数据帧上定义
tmaxproj 看起来像:
任何帮助都感激不尽。请让我知道是否需要任何进一步的数据来重现这部分代码。在此处输入图像描述
tmaxproj
小标题:51,134 x 7
date tmax_canesm tmax_miroc tmax_gfdl tmax_cnrm tmax_cmblr tmax_cgcm3 1 1961-01-01 28.1 27.7 27.3 27.8 28.3 28.3 2 1961-01-02 27.9 27.7 28.0 27.6 28.2 28.5 3 1961-01-03 27.9 27.9 27.9 27.0 27.7 28.5 4 1961-01-04 28.7 28.2 28.4 27.2 28.2 28.8 5 1961-01-05 28.6 28.5 28.2 28.1 28.9 29.2 6 1961-01-06 28.8 28.2 27.5 27.7 28.9 28.1 7 1961-01-07 28.5 28.1 27.2 27.4 27.7 28.4 8 1961-01-08 28.4 28.0 27.9 27.7 27.4 28.5 9 1961-01-09 28.8 28.1 28.2 28.1 27.6 28.4 10 1961-01-10 28.4 28。1 28.0 27.5 28.0 28.2
...还有 51,124 行
RCODE for (i in seq(rcp)) {
打印
cat("\n\n",names(rcp)[i],"\n")
为特定 RCP 情景选择预计温度系列
tmaxproj <- get(rcp[[i]])
每个 GCM 运行循环
for(j in seq(gcm)) {
# PRINT
cat(gcm[j],"")
# (4) EXTRAPOLATION OF THE CURVE:
# - DERIVE THE CENTERED BASIS USING THE PROJECTED TEMPERATURE SERIES
# AND EXTRACT PARAMETERS
bvar <- do.call(onebasis,c(list(x=tmaxproj[,j+1]),argvar))
cenvec <- do.call(onebasis,c(list(x=cen),argvar))
bvarcen <- scale(bvar,center=cenvec,scale=F)
# INDICATOR FOR COLD/HEAT DAYS
indheat <- tmaxproj[,j+1]>cen
# (5) IMPACT PROJECTIONS:
# - COMPUTE THE DAILY CONTRIBUTIONS OF ATTRIBUTABLE DEATHS
an <- (1-exp(-bvarcen%*%coef))*oiproj
# - SUM AN (ABS) BY TEMPERATURE RANGE AND PERIOD, STORE IN ARRAY BEFORE THE ITERATIONS
# NB: ACCOUNT FOR NO TEMPERATURE BELOW/ABOVE CEN FOR GIVEN PERIODS
ansim[,"tot","abs",j,i,1] <- tapply(an,seqperiod,sum)
ansim[,"cold","abs",j,i,1] <- tapply(an[!indheat],factor(seqperiod[!indheat]),sum)
ansim[,"heat","abs",j,i,1] <- tapply(an[indheat],factor(seqperiod[indheat]),sum)
# (6) ESTIMATE UNCERTAINTY OF THE PROJECTED AN:
# - SAMPLE COEF ASSUMING A MULTIVARIATE NORMAL DISTRIBUTION
set.seed(13041975+j)
coefsim <- mvrnorm(nsim,coef,vcov)
# - LOOP ACROSS ITERATIONS
for(s in seq(nsim)) {
# COMPUTE THE DAILY CONTRIBUTIONS OF ATTRIBUTABLE DEATHS
an <- (1-exp(-bvarcen%*%coefsim[s,]))*oiproj
# STORE THE ATTRIBUTABLE MORTALITY
ansim[,"tot","abs",j,i,s+1] <- tapply(an,seqperiod,sum)
ansim[,"cold","abs",j,i,s+1] <- tapply(an[!indheat],factor(seqperiod[!indheat]),sum)
ansim[,"heat","abs",j,i,s+1] <- tapply(an[indheat],factor(seqperiod[indheat]),sum)
}
} }
解决方案
推荐阅读
- mongodb - MongoDB - 具有相同结果的不同查询的索引使用情况
- c++ - 在 C++ 中保持大的普通结构原子的更好方法?
- django - 在 Django 中创建自定义登录身份验证
- python-3.x - NEAT 多重激活函数
- python - 我无法将“bmp”和“png”图像导入我的 pygame,
- proxy - 如何通过 Dante socks 代理配置 SOCKS4 身份验证
- excel - 打开 Excel Solver 时在 user32 中找不到 DLL 入口点 MessageBoxIndirectW
- reactjs - 反应不附加事件侦听器
- swift - 在 XMLParser 中识别 XML 字符串并将其格式化为可读格式
- bash - 无法删除 .git:目录不为空