[討論] R的$指令配合變數
最近Lab在跑一些統計資料
大部分都是一些滿簡單的運算(ex: 取mean)
就只是要處理的column和資料量滿多的
因為運算都一樣只是需要一直改變變數名稱
所以想要用迴圈的方式來解決這些名稱相似的column
可是目前遇到一個麻煩就是 當我想要用變數配合loop 指定table的某些column時
他會告訴我 $後面的變數名稱沒辦法接一些get、paste等指令
舉個簡化過的例子
"假設我想算這兩行 testdata$column1、testdata$column2的平均值
放到mean01和mean02這兩個變數裡面"
我原本是想改成
for(i in 1:2) assign(paste("mean0",i,sep=""),paste("testdata$column",i,sep=""))
不過似乎只要使用了$就沒辦法抓到資料
(像是我發現沒辦法這樣用=> get("testdata$column1") ,資料會抓不到)
後來發現不行之後 我試著把$前後分開
name <- testdata
for(i in 1:2) assign(paste("mean0",i,sep=""),name$(paste("column",i,sep="")))
不過他表示" $ operator is invalid for atomic vectors "
小弟剛接觸R不是很久 都是自己查google和翻書自學
總覺得應該不是什麼很難的功能
可是查資料查到卡關了 我想應該是有一些概念上的盲點沒看到-.-
所以不知道版上神人們能不能指點一下哪邊弄錯了 謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.121.75
→
11/19 16:06, , 1F
11/19 16:06, 1F
→
11/19 20:09, , 2F
11/19 20:09, 2F
→
11/19 21:37, , 3F
11/19 21:37, 3F
→
11/19 21:38, , 4F
11/19 21:38, 4F
→
11/19 21:38, , 5F
11/19 21:38, 5F
→
11/19 21:39, , 6F
11/19 21:39, 6F
→
11/19 21:40, , 7F
11/19 21:40, 7F
→
11/19 21:42, , 8F
11/19 21:42, 8F
→
11/19 21:42, , 9F
11/19 21:42, 9F
→
11/19 21:43, , 10F
11/19 21:43, 10F
→
11/19 21:52, , 11F
11/19 21:52, 11F
→
11/19 22:02, , 12F
11/19 22:02, 12F
→
11/19 22:14, , 13F
11/19 22:14, 13F
→
11/19 22:19, , 14F
11/19 22:19, 14F
→
11/19 22:20, , 15F
11/19 22:20, 15F
→
11/19 22:38, , 16F
11/19 22:38, 16F
→
11/19 22:38, , 17F
11/19 22:38, 17F
後來我還是打算用for的方式去寫
改成 for(i in 1:2){ temp=get(paste("column",i,sep=""),pos=name)
assign(paste("mean0",i,sep=""),temp) }
就可以用了 如果資料量和column數要修也是滿簡單的
gsuper大和obarisk大提供的colMeans和apply我有去查過試過
colMeans就要對array作mean運算來說真的滿方便的
而apply在對大量column作任何function都滿強大的 我想之後應該也會常派上用場~
因為使用的需求有點趕 R真的學的有點太倉促不扎實
也感謝clickhere大對我一些基本觀念的指正
受教了^^
※ 編輯: mark1357945 來自: 140.113.121.75 (11/19 23:48)