beerbottle 字符向量names=c('R026','R037','R087','R089','R239',' R255','R266','R388','R428','R555','R576','R605',' R621','R653','R654','R689','R733','R807' ,'R811','R824','R841','R843','R851') 字符向量中每一个元素都是一个数据框,要对每一个数据框的元素都做一次回归,比如 lm(R026$V2~R026$V3) , 但是 [quote]for(i in (1:N)) lm(names$V2~names$V3) [/quote] 这种形式是不能运行的。 而将这些变量一一作成一个list也是很麻烦的事情。 有没有好的解决办法呢? 要不这看似简单的事情就要变成体力劳动了。
daliang 这个用list很好解决吧~ list=list()<br /> for(i in 1:10)<br /> list[[i]]=data.frame(x=1:100,y=seq(2,200,by=2)+rnorm(100,0,5))<br /> <br /> lm.res=list()#将你每一个回归保存在一个list里,随时供你查询<br /> for(i in 1:10)<br /> lm.res[[i]]=lm(list[[i]]$y ~ list[[i]]$x)
beerbottle 而将这些变量作成一个list也是很麻烦的事情,(比如有有80个数据框), 偶的确是做了个list对象实现循环的,不过输入那么多东西的的很烦人 [s:12] , 有没有好的解决办法呢? [s:14]
friendpine 问题可以这样解决,不需要重新输入数据。 ############################################# names<-list(R026,R037,R087,R089,....) #不需要引号把元素括起来 result <- list() for(i in 1:n){ result [ [ i ] ]=lm(names [ [ i ] ]$V2~names [ [ i ] ]$V3) }
skyer_117 这里的数据框是不连续的,顺便罗嗦个如果数据框都分别存为文件了,可以用assign赋值到变量,如果是连续命名的话 for (i in 0:7) {<br /> assign(sprintf("ret%d",i),read.csv(sprintf("ret%d.csv",i),head=T))<br /> }