作者celestialgod (天)
看板R_Language
标题Fw: [程式] R 利用for做变数宣告
时间Fri Aug 28 23:26:06 2015
※ [本文转录自 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
1F:推 robin112:谢谢你! 我会试试用list作作看 10/20 00:30
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: celestialgod (111.248.8.209), 08/28/2015 23:26:06
2F:推 memphis: 把function塞到list里有什麽好处嘛? 08/29 07:02
3F:推 Edster: 把function塞到list中可以序列的引用function, 不用管名字 08/29 08:39
4F:→ celestialgod: magrittr就是利用list集合function来逐步执行 08/29 10:28