Re: [问题] 连续变量命名、运算

楼主: Wush978 (拒看低质媒体)   2015-01-12 00:38:18
# 方法一
利用一个list来放这些变量。
以抽象功能来说,
list很适合把字串map到R物件。
x <- list()
for(i in 1:3) {
name <- # 建立a1, a2, ...
x[[name]] <- value # 赋值
}
sum(unlist(x))
# 方法二
假设你已经用你上面写的方法设定好a1, a2, a3, ...
你可以把“环境”当list用。(但是两者还是不太一样)
retval <- 0
for(i in 1:3) {
name <- # 建立如a1, a2的字串
retval <- retval + globalenv()[[name]]
}
当然你可以继续玩apply家族
或是用get之类的函数
但是这些都是透过“环境”来利用字串存取物件。
※ 引述《ntme (one shot one kill)》之铭言:
: [问题类型]:
:
: 程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
:
: [软件熟悉度]:
: 请把以下不需要的部份删除
: 入门(写过其他程式,只是对语法不熟悉)
:
: [问题叙述]:
: 以用 for loop 产生连续的变量并命名,但不知道怎么用
: for loop再利用产生的变量运算
: [程式范例]:
:
: #产生 a1 = 1, a2 = 2, a3 = 3
: for ( i in 1:3 ) {
: var_name <- paste("a",i, sep="")
: assign( var_name, i)
: }
: 请问如何写for loop把 a1, a2, a3加起来
:
作者: ntme (one shot one kill)   2015-01-12 01:37:00
感谢Wush大大。globalenv()[[name]] 很实用!
作者: andrew43 (讨厌有好心推文后删文者)   2015-01-12 17:11:00
R的“环境”我一直掌握不好。其它语言也有这东西吗?
楼主: Wush978 (拒看低质媒体)   2015-01-12 23:08:00
environment有点小复杂,有兴趣的话我可以hangout上花十分钟解释
作者: andrew43 (讨厌有好心推文后删文者)   2015-01-12 23:45:00
谢谢。有机会的话你学学。
作者: e002311 (鸿)   2015-01-13 19:47:00
太强了

Links booklink

Contact Us: admin [ a t ] ucptt.com