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

看板R_Language作者 (天)時間8年前 (2015/08/28 23:26), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串1/1
※ [本文轉錄自 Statistics 看板 #1IOLy9VR ] 作者: Wush978 (拒看低質媒體) 看板: Statistics 標題: Re: [程式] R 利用for做變數宣告 時間: Sat Oct 19 00:17:02 2013 ※ 引述《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
※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: celestialgod (111.248.8.209), 08/28/2015 23:26:06

08/29 07:02, , 2F
把function塞到list裡有什麼好處嘛?
08/29 07:02, 2F

08/29 08:39, , 3F
把function塞到list中可以序列的引用function, 不用管名字
08/29 08:39, 3F

08/29 10:28, , 4F
magrittr就是利用list集合function來逐步執行
08/29 10:28, 4F
文章代碼(AID): #1Lu7sFYZ (R_Language)