Re: [程式] R 利用for做變數宣告

看板Statistics作者 (拒看低質媒體)時間10年前 (2013/10/19 00:17), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串5/5 (看更多)
※ 引述《robin112 (Robin)》之銘言: : 那請問如果我想開始使用y0~y9的話是要怎麼使用呢? : 例如 : boxplot(y0$x~y0$y) : boxplot(y1$x~y1$y) : ... : boxplot(y9$x~y9$y) ``` for(i in seq_along(list.x)) { # seq_along(list.x) 等同於 1:length(list.x) boxplot(list.x[[i]]$x ~ list.x[[i]]$y) locator(1) # 如果你想要點一下滑鼠再看下一張圖 # saevPlot(...) 如果你想要把圖片輸出 } ``` 這是你要的嗎? : 另外 : list.x為宣告一個空白list : 在for迴圈裡面的length(list.x)會隨著i跑嗎? : 有點想不透這一行 這牽涉到一點R 的基礎資料結構知識。 大部份R 的物件,包含你上面提到的y0, y1, y0$x, y0$y, ... 都是「向量」 而R 都允許使用者透過`[`或`[[`來操作和編輯向量內容。 ex: ```r a <- numeric(0) # 一個長度0的數值向量 a[5] <- pi a # [1] NA NA NA NA 3.141593 ``` 另外歡迎你開始學習使用list物件,list也是一種向量,而且是「R物件」的向量。 也就是說,所有的R物件都可以往裡面塞。 它非常強大。 ```r a <- list() a[[1]] <- pi # numeric a[[2]] <- 2L # integer a[[3]] <- letters # character a[[4]] <- TRUE # logical a[[5]] <- Sys.time() # time a[[6]] <- Sys.Date() a[[7]] <- iris a[[8]] <- function() { print("this is a function") } a a[[1]] a[[2]] ... a[[8]]() # 呼叫函數 ``` list 也可以提供用字串當名字的方式來儲存或取出物件 ```r a <- list(a = 1, b = letters, c = Sys.time(), d = names) # 直接定義長度為4的`list`, 並且取名字 a[["a"]] a[["b"]] a[[1]] # what is this? ``` 學會使用list之後,就可以解決用回圈來取名字以及用回圈來access變數的需求。 後續若有純技術的問題,歡迎到R_Language板討論。 : 謝謝指教 : ※ 引述《BugEater (無庸)》之銘言: : : 試試下面這個應該可行 : : z=paste("y",0:9,sep="") : : ye=c(2000:2009) : : list.x<-list() : : for ( i in 1:10 ) : : { : : list.x[[length(list.x)+1]] <- x[year == ye[i],] : : } : : names(list.x)<-z : : attach(list.x) -- 歡迎到ptt R_Language版分享R 的相關知識 歡迎加入 Taiwan R User Group : http://www.facebook.com/Tw.R.User 聚會報名 http://www.meetup.com/Taiwan-R/ 聚會影片 https://www.youtube.com/user/TWuseRGroup -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.232.231.29

10/20 00:30, , 1F
謝謝你! 我會試試用list作作看
10/20 00:30, 1F
celestialgod:轉錄至看板 R_Language 08/28 23:26
文章代碼(AID): #1IOLy9VR (Statistics)
討論串 (同標題文章)
文章代碼(AID): #1IOLy9VR (Statistics)