作者celestialgod (天)
看板R_Language
标题[问题] (救回) loop in analysis
时间Sun Nov 20 14:57:07 2016
请问一下
今天我有一个资料夹 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,但他出现错误
我上网找了几个网站 但没有找到解答
想要请问板上的高手
是那出现错误
谢谢
--
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1421525471.A.B99.html
1F:→ obarisk: x1和x[1]不同 01/18 07:17
2F:→ obarisk: 你用plot(t[ ,1], t[, 2])比较好 01/18 07:18
3F:→ obarisk: 另外,图如果没存,用for loop不是很好用 01/18 07:19
4F:→ ******: 请问可以提供确切的code给我参考吗? 谢谢 01/18 16:13
5F:→ ******: 其实我想要问的就是sas 的 %do %to macro在R如何写这样 01/18 17:25
6F:→ andrew43: 改用 t[ ,1] t[ ,2] t[ ,3] t[ ,4] 来提取变数。 01/18 20:27
7F:→ andrew43: 如果要用for loop,就是生出(1,2)和(3,4)就解决了。 01/18 20:27
8F:→ ******: 上面说的只要变项换个顺序就不能达成 我想要的是universal 01/18 21:32
9F:→ *****: 的code 01/18 21:32
10F:→ andrew43: 那你可以思考可以universal的条件是基於什麽? 01/18 21:38
11F:→ andrew43: 在for loop里,总是要指定一个vector变数。 01/18 21:38
12F:→ andrew43: 例如你想把for变数改成其它东西,那它会是什麽? 01/18 21:39
13F:→ andrew43: 请你说说看,这样大家比较容易想出你真正有用的答案。 01/18 21:40
14F:→ ******: 就是conditional 特定的variable prefix +number 01/18 22:13
15F:→ ******: 这个prefix 在这边就是x,y 後面变换的就是i = 1 to n 01/18 22:14
16F:→ andrew43: 那可能没有直接解。要先用for生出x1,x2.. y1,y2字串 01/18 22:18
17F:→ andrew43: 应该没有像SAS般的做法。 01/18 22:19
18F:→ andrew43: 如果要R的风格,可能不是一个data frame而是一个list。 01/18 22:20
19F:→ andrew43: 每个list是一个x和一个y。这样就有现成的function了。 01/18 22:21
20F:→ andrew43: 每个list之下 01/18 22:21
21F:→ andrew43: 一直说错... list之下是数个data frame或matrix 01/18 22:22
22F:→ andrew43: 以分别表示(x1,y1), (x2,y2)。 01/18 22:22
23F:→ aaron77217: for(i in 1:2){ 01/18 22:44
24F:→ aaron77217: plot(t[,paste('x',i,sep="")],t[,paste('y',i,sep="" 01/18 22:45
25F:→ aaron77217: )]) 01/18 22:46
26F:→ aaron77217: } 01/18 22:46
27F:→ aaron77217: 不知道这是不是你想要的方式 01/18 22:47
28F:→ andrew43: 看起来不错。意思是t[,"x1"]来提取t$x1。 01/18 22:57
29F:→ andrew43: 建议中间插个 dev.new() 不然前图会被後图取代。 01/18 23:05
30F:→ ******: 请问dev.new() 插入哪呢 我放在会後面似乎无法成功 01/18 23:27
31F:→ ******: 另外我自行延伸把plot 带入一些常见的指令像是cor 01/18 23:28
32F:→ ******: for(i in 1:2){ cor(paste('x',i,sep=""),paste('y',i,sep 01/18 23:28
33F:→ ******: "")]) } 01/18 23:28
34F:→ ******: 却无法成功 请问这个问题是? 01/18 23:29
35F:→ ******: 最後一个问题是 像一些model 给予分析 都给予最简易数值 01/18 23:30
36F:→ ******: 我刚尝试用上面的语句再写成ci= cor(t$xi,t$yi) 01/18 23:31
37F:→ ******: for(i in 1:2){paste('c',i,sep="")<- 01/18 23:31
38F:→ ******: cor(t[,paste('x',i,sep="")],t[,paste('y',i,sep="")]) 01/18 23:31
39F:→ ******: 结果失败 请问一下有无方式可以成功呢 ? 谢谢 01/18 23:32
40F:→ ******: 发现dev.new放在最前面就成功了 谢谢告知这个指令 01/18 23:37
41F:→ andrew43: cor()里要塞二个vector。 01/18 23:39
42F:→ andrew43: 像是 cor(t[,"x1"], t[,"y1"]) 01/18 23:39
43F:→ andrew43: 而你塞给cor()的只是字串,并不是实际数值。 01/18 23:40
44F:→ andrew43: 猜想你没有完全明白aaron77217板友提供的源码。 01/18 23:41
45F:→ andrew43: paste('x',i,sep="") 会回传字串,而 01/18 23:42
46F:→ andrew43: t[,paste('x',i,sep="")] 会回传一个向量。 01/18 23:42
47F:→ andrew43: 抱歉,没看到後来你也试过了。 01/18 23:43
48F:→ andrew43: 问题可能是你cor()只输入二个点。二个点求相关系数干嘛? 01/18 23:44
49F:→ andrew43: 或是不只二个点,请再提供更多讯息。 01/18 23:45
50F:→ ******: 我後来发现两个点的确有问题 我就新增多个数值 01/19 00:07
51F:→ aaron77217: for(i in 1:2){ 01/19 00:07
52F:→ ******: 并且我是确定过当cor(t$x1,t$y1) 可以得到相关系数 01/19 00:08
53F:→ ******: 才进行的 抱歉打断推文 01/19 00:08
54F:→ aaron77217: assign(paste("c",i,sep=""),cor(t[,paste("x",i,se 01/19 00:08
55F:→ aaron77217: p="")],t[,paste("y",i,sep="")])) 01/19 00:09
56F:→ aaron77217: } 01/19 00:09
57F:→ aaron77217: @@"没关西 试试吧 这样就可以同步产生c1 c2了 01/19 00:10
58F:→ ******: 感谢 测试成功 谢谢大家的教导 sas跟r的写法在这个部份 01/19 00:10
59F:→ ******: 差异有点大 在sas原本简单macro 但在r这边就思维不一样 01/19 00:11
※ 编辑: celestialgod (36.233.51.224), 11/20/2016 14:57:36