[问题] loop in analysis

楼主: wanson (望生)   2015-01-18 04:11:08
请问一下
今天我有一个资料夹 t
变项
x1 y1 x2 y2
1 46 5452 9 885
2 546 321 87 8
我想要使用一个loop 去画图
plot(t$x1, t$y1)
plot(t$x2, t$y2)
for(i in 1:2){
plot(t$x[i], t$y[i])
}
我使用以下的code,但他出现错误
我上网找了几个网站 但没有找到解答
想要请问板上的高手
是那出现错误
谢谢
作者: obarisk (OSWALT)   2015-01-18 07:17:00
x1和x[1]不同你用plot(t[ ,1], t[, 2])比较好另外,图如果没存,用for loop不是很好用
楼主: wanson (望生)   2015-01-18 16:13:00
请问可以提供确切的code给我参考吗? 谢谢其实我想要问的就是sas 的 %do %to macro在R如何写这样
作者: andrew43 (讨厌有好心推文后删文者)   2015-01-18 20:27:00
改用 t[ ,1] t[ ,2] t[ ,3] t[ ,4] 来提取变量。如果要用for loop,就是生出(1,2)和(3,4)就解决了。
楼主: wanson (望生)   2015-01-18 21:32:00
上面说的只要变项换个顺序就不能达成 我想要的是universal的code
作者: andrew43 (讨厌有好心推文后删文者)   2015-01-18 21:38:00
那你可以思考可以universal的条件是基于什么?在for loop里,总是要指定一个vector变量。例如你想把for变量改成其它东西,那它会是什么?请你说说看,这样大家比较容易想出你真正有用的答案。
楼主: wanson (望生)   2015-01-18 22:13:00
就是conditional 特定的variable prefix +number这个prefix 在这边就是x,y 后面变换的就是i = 1 to n
作者: andrew43 (讨厌有好心推文后删文者)   2015-01-18 22:18:00
那可能没有直接解。要先用for生出x1,x2.. y1,y2字串应该没有像SAS般的做法。如果要R的风格,可能不是一个data frame而是一个list。每个list是一个x和一个y。这样就有现成的function了。每个list之下一直说错... list之下是数个data frame或matrix以分别表示(x1,y1), (x2,y2)。
作者: aaron77217 (慎)   2015-01-18 22:44:00
for(i in 1:2){plot(t[,paste('x',i,sep="")],t[,paste('y',i,sep="")])}不知道这是不是你想要的方式
作者: andrew43 (讨厌有好心推文后删文者)   2015-01-18 22:57:00
看起来不错。意思是t[,"x1"]来提取t$x1。建议中间插个 dev.new() 不然前图会被后图取代。
楼主: wanson (望生)   2015-01-18 23:27:00
请问dev.new() 插入哪呢 我放在会后面似乎无法成功另外我自行延伸把plot 带入一些常见的指令像是corfor(i in 1:2){ cor(paste('x',i,sep=""),paste('y',i,sep"")]) }却无法成功 请问这个问题是?最后一个问题是 像一些model 给予分析 都给予最简易数值我刚尝试用上面的语句再写成ci= cor(t$xi,t$yi)for(i in 1:2){paste('c',i,sep="")<-cor(t[,paste('x',i,sep="")],t[,paste('y',i,sep="")])结果失败 请问一下有无方式可以成功呢 ? 谢谢发现dev.new放在最前面就成功了 谢谢告知这个指令
作者: andrew43 (讨厌有好心推文后删文者)   2015-01-18 23:39:00
cor()里要塞二个vector。像是 cor(t[,"x1"], t[,"y1"])而你塞给cor()的只是字串,并不是实际数值。猜想你没有完全明白aaron77217板友提供的源码。paste('x',i,sep="") 会回传字串,而t[,paste('x',i,sep="")] 会回传一个向量。抱歉,没看到后来你也试过了。问题可能是你cor()只输入二个点。二个点求相关系数干嘛?或是不只二个点,请再提供更多讯息。
楼主: wanson (望生)   2015-01-19 00:07:00
我后来发现两个点的确有问题 我就新增多个数值
作者: aaron77217 (慎)   2015-01-19 00:07:00
for(i in 1:2){
楼主: wanson (望生)   2015-01-19 00:08:00
并且我是确定过当cor(t$x1,t$y1) 可以得到相关系数才进行的 抱歉打断推文
作者: aaron77217 (慎)   2015-01-19 00:08:00
assign(paste("c",i,sep=""),cor(t[,paste("x",i,sep="")],t[,paste("y",i,sep="")]))}@@"没关西 试试吧 这样就可以同步产生c1 c2了
楼主: wanson (望生)   2015-01-19 00:10:00
感谢 测试成功 谢谢大家的教导 sas跟r的写法在这个部份差异有点大 在sas原本简单macro 但在r这边就思维不一样

Links booklink

Contact Us: admin [ a t ] ucptt.com