Fw: [程式] R 利用for做變數宣告
※ [本文轉錄自 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
10/20 00:30, 1F
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: celestialgod (111.248.8.209), 08/28/2015 23:26:06
推
08/29 07:02, , 2F
08/29 07:02, 2F
推
08/29 08:39, , 3F
08/29 08:39, 3F
→
08/29 10:28, , 4F
08/29 10:28, 4F