私はまだRを学習していて、Rでファイルを読み書きするのに問題があります。私がやろうとしているのは、リサンプリングしてベクトルに保存するときに、共線性を取得している反復で取得することです。2番目のコードでこのベクトルを使用して、これらの反復を無視し、次の反復に進みます。
私のコードにはほとんどエラーがありません。あなたが助けてくれて、これを行うためのより良い方法を教えてください。ただし、後で使用できるように、iterベクトルをファイルに保存する必要があることに注意してください。
コードは次のとおりです。
a0=rep(1,40)
a=rep(0:1,20)
b=c(rep(1,20),rep(0,20))
c0=c(rep(0,12),rep(1,28))
c1=c(rep(1,5),rep(0,35))
c2=c(rep(1,8),rep(0,32))
c3=c(rep(1,23),rep(0,17))
c4=c(rep(1,6),rep(0,34))
x=matrix(cbind(a0,a,b,c0,c1,c2,c3,c4),nrow=40,ncol=8)
sam <- function(n){
iterlist <- NULL
for(i in 1:n){
set.seed(i)
indx <- sample(1:nrow(x),nrow(x),replace=T)
samx <- x[indx,]
e <- crossprod(samx)
ee <- eigen(e)
evals <- ee$values
Zeval <- which(ifelse(abs(evals)<=1e-7,TRUE,FALSE))
if(length(Zeval)!=0) iterlist <- c(iterlist,i)
}
return(iterlist)
}
iter <- sam(20)
setwd("C:/Users/Sam/Desktop/R")
writeLines(iter)
readLines(iter)
fit <- function(dat,n){
for(i in 1:n){
if(i==iter) next
set.seed(i)
indx <- sample(1:nrow(x),nrow(x),replace=T)
samx <- x[indx,]
fit <- lm(rnorm(nrow(x),i,2*i)~samx-1)
bhat <- coef(fit)
}
return(bhat)
}
fit(x,20)
ありがとうございました