Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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 加载用于估算的变量名称,形成一个包含空条目的矩阵_R_Variables_Matrix_Var_Cross Product - Fatal编程技术网

R 加载用于估算的变量名称,形成一个包含空条目的矩阵

R 加载用于估算的变量名称,形成一个包含空条目的矩阵,r,variables,matrix,var,cross-product,R,Variables,Matrix,Var,Cross Product,我想把用于估算的变量的名称加载到一个矩阵中。如果矩阵的所有行都包含变量名,那么这种方法非常有效。但是,我想测试所有不同的组合,如下面的代码所示。这里有些行只包含“”。如果有一行不包含变量名,则会出现错误。 是否有方法从包含空条目的矩阵加载名称 library("vars") # required for VAR analysis Data <- data.table( A=c(1:100), B=c(2:102), C=c(3:103) ) VARIABLES.Mat

我想把用于估算的变量的名称加载到一个矩阵中。如果矩阵的所有行都包含变量名,那么这种方法非常有效。但是,我想测试所有不同的组合,如下面的代码所示。这里有些行只包含“”。如果有一行不包含变量名,则会出现错误。 是否有方法从包含空条目的矩阵加载名称

library("vars") # required for VAR analysis

Data <- data.table(
  A=c(1:100), 
  B=c(2:102),
  C=c(3:103)
  )

VARIABLES.Matrix <- rbind(
c("A","B","C"),
c("A","B",""),
c("A","",""),
c("A","","C"),
c("","","C"),
c("","B","C")
)

for (i in 1:nrow(VARIABLES.Matrix)){
  VARselect(Data[, as.matrix(VARIABLES.Matrix)[i,1:3], with=F], lag.max = 3)
}

# This works fine
VARselect(Data[, as.matrix(VARIABLES.Matrix)[1,1:3], with=F], lag.max = 3)

# This does not work, which is related to "" 
VARselect(Data[, as.matrix(VARIABLES.Matrix)[3,1:3], with=F], lag.max = 3)
VAR分析所需的
库(“VAR”)#

Data我的问题是:为什么需要坚持从矩阵中加载变量,为什么不从列表中加载变量,列表中的元素只是要使用的变量的名称?像这样:

library("data.table")
library("vars") # required for VAR analysis

Data <- data.table(
    A=c(1:101), 
    B=c(2:102),
    C=c(3:103)
)

VARIABLES.List <- list(
    c("A","B","C"),
    c("A","B"),
    c("A"),
    c("A","C"),
    c("C"),
    c("B","C")
)

for (VARS in VARIABLES.List){
    VARselect(Data[, VARS], lag.max = 3)
}

一种解决方案是使用以下命令作为VARselect的输入:as.matrix(VARIABLES.matrix)[i,1:3][as.matrix(VARIABLES.matrix)[i,1:3]!=“”]
lapply(VARIABLES.List, function(VARS) VARselect(Data[, VARS], lag.max = 3))