相关疑难解决方法(0)

将模型公式传递给另一个函数时,找不到对象错误

我有一个奇怪的问题,我似乎无法解决.

我已经尝试编写一个函数,对R中逐步过程选择的模型执行K折交叉验证.(我知道逐步过程的问题,它纯粹用于比较目的):)

现在的问题是,如果我定义函数参数(linmod,k,direction)并运行函数的内容,它可以完美地工作.但是,如果我将它作为一个函数运行,我会收到一条错误,指出无法找到datas.train对象.

我已经尝试使用debug()逐步执行该函数,并且该对象显然存在,但R表示当我实际运行该函数时它不会.如果我只是使用lm()拟合模型,它工作正常,所以我认为这是循环中的step函数的问题,而在函数内部.(尝试注释掉步骤命令,并将预测设置为普通线性模型的预测.)

#CREATE A LINEAR MODEL TO TEST FUNCTION
lm.cars <- lm(mpg~.,data=mtcars,x=TRUE,y=TRUE)


#THE FUNCTION
cv.step <- function(linmod,k=10,direction="both"){
  response <- linmod$y
  dmatrix <- linmod$x
  n <- length(response)
  datas <- linmod$model
  form <- formula(linmod$call)

  # generate indices for cross validation
  rar <- n/k
  xval.idx <- list()
  s <- sample(1:n, n) # permutation of 1:n
  for (i in 1:k) {
    xval.idx[[i]] <- s[(ceiling(rar*(i-1))+1):(ceiling(rar*i))]
  }

  #error calculation
  errors <- R2 <- 0

  for (j in 1:k){
     datas.test <- datas[xval.idx[[j]],]
       datas.train <- datas[-xval.idx[[j]],] …
Run Code Online (Sandbox Code Playgroud)

r formula

10
推荐指数
2
解决办法
2万
查看次数

麻烦传递参数在自己的函数内运行

我正在编写一个函数,我想将一些参数传递给crrstep-function('crrstep'包),但我遇到了一个问题:当我在crrstep中输入时,我的函数中的参数'event'无法识别.我想crrstep看起来与我想要的环境不同,但即使经过几个小时的网络搜索解决方案,我似乎也无法弄清楚如何解决这个问题(我在编程方面经验不足......) .任何帮助将不胜感激!

这是一些模拟数据(来自crrstep文档的调整示例)和我的代码示例:

n <- 500
ftime <- rexp(n)
fstatus <- sample(0:2,n,replace=TRUE)
testdata <- matrix(runif(8*n),nrow=n)
testdata <- cbind(ftime,fstatus,testdata)
dimnames(testdata)[[2]] <- c('ftime','fstatus','x1','x2','x3','x4','x5','x6','x7','x8')
testdata <- as.data.frame(testdata)
formula1 <- ftime ~ 1 + x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8
rm(fstatus,ftime,n)

test.fun <- function(x,data,event){
require(crrstep)
select.mod<- crrstep(formula=x,,etype=event, failcode=1, cencode=0,data=data, 
                   direction = "backward", criterion = "AIC", crr.object = TRUE, 
                   trace = FALSE)
#Rest of function omitted for now
print(select.mod)
}

#Test
test.fun(x=formula1,data=testdata,event=fstatus) 
#I get: Error in …
Run Code Online (Sandbox Code Playgroud)

environment r function argument-passing

3
推荐指数
1
解决办法
3540
查看次数

标签 统计

r ×2

argument-passing ×1

environment ×1

formula ×1

function ×1