string - R: Columnwise循环上的字符串变量

  显示原文与译文双语对照的内容
0 0

我的第一个 R 问题还没有在任何论坛中讨论过,显然。请考虑我的假数据集:


A<-matrix(c(1,2,3,4,5,2,3,4,5,6,3,4,5,6,7),5,3) 
a<-c(2,4,6,8,9)

我想将A 上的每一列回归,并执行systemfit来测试一些限制,e.g.:


system.1<-list(A[,1]~a,A[,2]~a,A[,3]~a) 
systemfit(system.1)

现在我的问题是我的"真实"矩阵A 有几百个列。 我正在努力创建一个systemfit接受的列表。 我提出了以下代码,但代码不可行:


varlist=NULL 
for (i in 1:3){varlist[i] <- paste("A[,",i,"] ~ a",sep="")} 
 models <- lapply(varlist, function(x){ 
 systemfit(substitute(j, list(j = as.name(x)))) 
}) 

如果你击中


substitute(j, list(j = as.name(varlist)))

你可以看到

 
`A[,1] ~ a`

 

包含``符号,这似乎引起了systemfit的麻烦,因为它不是作为公式被接受的。 因这里问题似乎是columnwise循环,但我看不到任何数据集的替代方法。

任何帮助都会非常感激 !

谢谢!

时间: 原作者:

0 0

用于这样做的方法是创建一个引用数据框中列的公式列表,然后将列表和数据帧传递给 systemfit(...)


df <- data.frame(a,A) # data frame with columns a, X1, X2, X3,.. .
forms <- lapply(paste0(colnames(df)[-1],"~a"),as.formula)
library(systemfit)
systemfit(forms,data=df)
# systemfit results 
# method: OLS 
#
# Coefficients:
# eq1_(Intercept) eq1_a eq2_(Intercept) eq2_a eq3_(Intercept) eq3_a 
# -0.182927 0.548780 0.817073 0.548780 1.817073 0.548780 

原作者:
...