我觉得这应该是世界上最简单的事情。首先,我对R来说比较新,但我想学习它。话虽如此,到目前为止我的经验表明R不是很直观。我在几个小时内在Python中弄清楚到目前为止已经花了2天没有得到R的结果。
我想在选择的面板数据中回归一系列因变量。我有几个带有各种归一化曲线的变量。我希望能够迭代许多而不是一次写回归1。
我想做类似以下的事情:plm(依赖~loopedvar + var2 + var3 + var4,data = mydata,model = c(" in"))
我使用grep创建了一个varlist,实际上非常简单。现在我想用varlist 1-by-1中的变量替换为' loopedvar。'
在使用SPSS的python中我会做类似
的事情nvariables=len(varlist)
for variable in xrange(nvariables):
testvariable=varlist[variable]
spss.Submit("""AREG dependent WITH
{}
var2
var3
var4
/METHOD PW.
""" .format(testvariable))
我也找到了这个教程http://www.ats.ucla.edu/stat/r/pages/looping_strings.htm,但是我无法使它工作,而且我不理解R中的* apply函数。例如,当编写lapply时(varlist,function(x)[model] ])varlist [var]如何知道去哪里?
我尝试过使用粘贴的循环并使用不同的错误替换。
for (var in 1:length(varlist)) {
models<-plm(substitute(dependent ~ i, list(i=as.name(paste0(var)), as.name("var2"), as.name("var3"), as.name("var4")) data=mydata, model=c("within")))
}
引发&#34;错误:意外的符号:[...(var4&#34;&#34;))数据]&#34;
for (var in 1:length(varlist)) {
+ models<-summary(plm(paste0("dependent ~ ",var," + var2 + var3 + var4"), data=mydata, model=c("within")))
+ }
引发&#34;错误:继承(对象,&#34;公式&#34;)不是真的&#34;
这些错误非常无益,我只是厌倦了猜测。在我的估计中,R语法并不是非常简单,我能做到的机会很小。
请不要发布不答复。根据我的经验,R人对此有着浓厚的兴趣。如果我没有充分描述我的问题或欲望只是要求更多信息,我将很乐意承担责任。
编辑:我忘记了plm函数中的索引参数。它应该在那里。答案 0 :(得分:0)
绝对是在R中包裹一个人更难的事情之一是它不喜欢&#34;宏&#34;在其他一些语言中使用的方法(我学会了在分支到R之前对Stata进行编码)。几乎总有一种方法可以使用* apply函数而不是loop-with-macro-reference来做你想做的事。
以下是我如何处理您的特定问题。
data <- data.frame(dep = runif(100), var1=runif(100), var2=runif(100),var3=runif(100)) #Create some fake data
varlist<-c("var1","var2","var3") # Declare your varlist as a vector
lm.results<- lapply(data[,varlist],function(x) lm(dep ~ x, data=data)) # run the regression on each variable.
让我稍微打破最后一行。 R中的数据帧实际上是具有额外结构的列表,其中列表中的每个项目都是变量/列。因此,lapply(data[,varlist],FUN)
将使用FUN
中的每一列评估函数data[,varlist]
,即data
中varlist
中的每个变量。
由于没有内置功能可以满足您的需求(通常没有)您可以动态声明它。 function(x) lm(dep ~ x, data=data)
将变量作为参数(在lapply
调用中,varlist
中的每个变量)并对该变量进行回归dep
。结果将存储在名为lm.results
的新列表中。