【发布时间】:2017-07-14 12:51:01
【问题描述】:
函数内部的变量不会存储在 R 编程中的全局变量中。看代码sn -p:
install.packages('HMM')
library('HMM')
hmm_source <- function(){
lamba_1 <- initHMM(c("s1","s2"), c("a","b","c"), c(1,0), matrix(c(.1,.6,.9,.4),nrow = 2,ncol = 2),matrix(c(.1,.4,.3,.2,.6,.4),nrow = 2,ncol = 3))
lamba_2 <- initHMM(c("s1","s2"), c("a","b","c"), c(1,0), matrix(c(.4,.8,.6,.2),nrow = 2,ncol = 2),matrix(c(.5,.2,.4,.1,.1,.7),nrow = 2,ncol = 3))
return(list(m1=lamba_1,m2=lamba_2))
}
source1_2 <- hmm_source()install.packages('HMM')
library('HMM')
hmm_source <- function(){
lamba_1 <- initHMM(c("s1","s2"), c("a","b","c"), c(1,0), matrix(c(.1,.6,.9,.4),nrow = 2,ncol = 2),matrix(c(.1,.4,.3,.2,.6,.4),nrow = 2,ncol = 3))
lamba_2 <- initHMM(c("s1","s2"), c("a","b","c"), c(1,0), matrix(c(.4,.8,.6,.2),nrow = 2,ncol = 2),matrix(c(.5,.2,.4,.1,.1,.7),nrow = 2,ncol = 3))
return(list(m1=lamba_1,m2=lamba_2))
}
source1_2 <- hmm_source()
这里我的函数返回两个 hmm 模型,但变量 lamba_1 和 lamba_2 没有保存在 R 的全局环境中。我在 RStudio 中工作,虽然我也尝试在 R shell 中运行代码。但它总是给我错误:找不到对象lamba_1。有什么帮助吗?
【问题讨论】:
-
对象在您分配时存储。因此,当您执行
source1_2 <- hmm_source()时,您的结果是一个list,以您给它的名称命名:source1_2 -
使用
<<-将对象存储在全局环境中的函数内。 -
它们被保存为
source1_2$m1和source1_2$m2。我不建议使用<<-分配它们的方式 - 否则您将覆盖 GlobalEnv 中的变量。我认为这不是一个很好的函数副作用用例 -
@count 这是一个相当糟糕的建议……
-
@count 这不是他们的意思——一般不要这样做
标签: r