Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用R,如何引用变量(或变量变量)a la PHP_Php_R_Variables_Variable Assignment_Variable Variables - Fatal编程技术网

使用R,如何引用变量(或变量变量)a la PHP

使用R,如何引用变量(或变量变量)a la PHP,php,r,variables,variable-assignment,variable-variables,Php,R,Variables,Variable Assignment,Variable Variables,使用R stats,我想访问一个类似于PHP双美元符号技术的可变场景: 具体地说,我在R中寻找一个与PHP中的$$等效的函数 更新:批准的答案包含所需的基本功能 在PHP中,我可以分配$a=hello;和$hello=hello world;。然后我可以使用eval来动态改变变量;这在php中称为变量,使用两个美元符号$$:echo$$a;将打印hello world。它计算$a,即hello,然后计算$hello 因此,我有一个使用R的回归设置,有4个数据选项和3个模型选项。我使用R和主要是

使用R stats,我想访问一个类似于PHP双美元符号技术的可变场景:

具体地说,我在R中寻找一个与PHP中的$$等效的函数

更新:批准的答案包含所需的基本功能

在PHP中,我可以分配$a=hello;和$hello=hello world;。然后我可以使用eval来动态改变变量;这在php中称为变量,使用两个美元符号$$:echo$$a;将打印hello world。它计算$a,即hello,然后计算$hello

因此,我有一个使用R的回归设置,有4个数据选项和3个模型选项。我使用R和主要是库plm执行大约60行统计数据,但也使用tseries、lmtest、一系列诊断测试、汇总OLS、固定效应FE和随机效应RE以及异方差、序列自相关、互相关自相关等测试。如果存在这些元素,我会根据存在的内容巧妙地更新标准错误:仅异质[vcovHC white],异质串联或异质交叉[vcovHC arellano],全部[vcovSCC Driscoll Kray]

最后,我想在一个页面上显示3个模型选项的调整回归模型FE/RE。每个页面将有四个数据选项中的一个。我想输出乳胶。所以在这个场景中,我需要一个变量方法。我正在尝试求值、解析、替换、赋值

这样,我在R MDATA中有一个变量,包含了回归所需要的数据。我还有mDat.hi,mDat.mid,mDat.low。这4个元素可以表示为指向变量的字符串列表:

d=cmDat.total、mDat.low、mDat.mid、mDat.hi;数据循环

类似地,对于模型,我有使用公式、公式、pForumla的公式数据类型,例如model.main=emp~wage+capital | lagwage,1+capital:

m=cmodel.main,model.lone,model.interaction;模型回路

我想循环d中的I,m中的j,然后进行一系列的回归

for(i in 1:length(d))
    {
    myData = $$d[i];
    for j in 1:length(m))
        {
        myModel = $$m[j];
        ... ### do stuff with myData, myModel
            that has been assigned the values of myData (a data frame) 
            and myModel (a model specification)
对于i=1;j=1,myData的计算结果为mDat.total数据帧,myModel的计算结果为model.main

理想情况下,我想要一个使用R的独立函数,其行为类似于$$,例如,在上面的伪代码中,将$$替换为函数doubleEvaluatex或variableX

提前谢谢

蒙特

{x:

考虑从字符串值中获取环境变量。另外,考虑数据文件和模型列表之间的嵌套的LIAPE用于更有组织的返回对象。嵌套for循环需要将每个迭代添加到生长列表中,除非您只需要输出。下面的例子使用线性模型,LM:


回答很好。是的,我同意Lappy是一种正确的方法,但有时Lappy的逻辑没有过程for循环那么有意义。但是,关于不断增长的列表,您可能是对的。让我编写代码,看看它是否有效。我几乎肯定我可以让它工作,但对于任何变量类型,是否有$$方法可以这样做可以使用R吗?因此,在您的场景中,您只构建了一个对象,例如ols。我需要执行几个调用,并将其存储在主列表中…我尝试在上面的列表场景中替换您的行ols,它返回一个维度正确的对象,但所有值均为FALSE。>strmodeldata列表4$:列表3..$:logi FALSE..$:logiFALSE..$:logi FALSE$:3..$:logi FALSE..$:logi FALSE$:3..$:logi FALSE..$:logi FALSE$:3..$:logi FALSE..$:logi FALSE..$:logi FALSE可能需要引用…listunittest.1=unittest.1,unittest.2=unittest.2,bptest=bptest,viftest=viftest,pdwtest,pbgtest=pbgtest,poolled.reg=poolled.reg,poolled.sum=poolled.sum,poolled.xsd=poolled.xsd,poolled.coef=poolled.coef,fixed.reg=fixed.reg,…,random.reg=random.reg,…,hausmantest=hausmantest;
for(i in 1:length(d))
    {
    myData = $$d[i];
    for j in 1:length(m))
        {
        myModel = $$m[j];
        ... ### do stuff with myData, myModel
            that has been assigned the values of myData (a data frame) 
            and myModel (a model specification)
model1 <- y ~ x1
model2 <- y ~ x2
model3 <- y ~ x3

dflist <- c("df1","df2","df3")
modelist <- c("model1", "model2", "model3")

# MODEL DATA RETURNS NESTED LIST OF 3 ELEMENTS 
# EACH WITH CORRESPONDING DATA METRICS (COEFF, RESIDUALS, ETC.)
modeldata <- lapply(dflist,
                    function(x) {                  
                    df<-get(x)       
                    lapply(modelist,
                           function(y) {
                           model <- get(y)
                           ols <- lm(model, df)                                          
                    })                  
               })

# BELOW CREATES MODEL SUMMARY LIST OF 3 ELEMENTS 
# FOR FIRST THREE MODELS USING FIRST DATASET
modelsummary <- lapply(modeldata[[1]], summary)
# INITIALIZE A LIST TO CONTAIN DATA
modeldata <- list()

for (i in dflist){  
  df<-get(i)
  for (j in modelist){    
    model <- get(j)

    # APPEND TO MODELDATA LIST
    # FINAL RETURN IS LARGE LIST OF ALL DATA MODELS
    modeldata <- c(modeldata, lm(model, df))    
  }  
}