R语言 将矩阵列表组合成公式

ih99xse1  于 2023-04-03  发布在  其他
关注(0)|答案(1)|浏览(103)

我有一些数据,看起来像:

[[1]]
     [,1]       [,2]           [,3]             [,4]         [,5]     [,6]                 
[1,] "HPI_Y_ln" "Interbank_6M" "Loans_Total_ln" "USDEUR_EoP" "CPI_ln" "Ratio_Re_New_Cars_Y"

[[2]]
     [,1]           [,2]             [,3]         [,4]       [,5]                  [,6]             [,7]           [,8]          
[1,] "HPI_Y_ln"     "HPI_Y_ln"       "HPI_Y_ln"   "HPI_Y_ln" "HPI_Y_ln"            "Interbank_6M"   "Interbank_6M" "Interbank_6M"
[2,] "Interbank_6M" "Loans_Total_ln" "USDEUR_EoP" "CPI_ln"   "Ratio_Re_New_Cars_Y" "Loans_Total_ln" "USDEUR_EoP"   "CPI_ln"      
     [,9]                  [,10]            [,11]            [,12]                 [,13]        [,14]                
[1,] "Interbank_6M"        "Loans_Total_ln" "Loans_Total_ln" "Loans_Total_ln"      "USDEUR_EoP" "USDEUR_EoP"         
[2,] "Ratio_Re_New_Cars_Y" "USDEUR_EoP"     "CPI_ln"         "Ratio_Re_New_Cars_Y" "CPI_ln"     "Ratio_Re_New_Cars_Y"
     [,15]                
[1,] "CPI_ln"             
[2,] "Ratio_Re_New_Cars_Y"

[[3]]
     [,1]             [,2]           [,3]           [,4]                  [,5]             [,6]             [,7]                 
[1,] "HPI_Y_ln"       "HPI_Y_ln"     "HPI_Y_ln"     "HPI_Y_ln"            "HPI_Y_ln"       "HPI_Y_ln"       "HPI_Y_ln"           
[2,] "Interbank_6M"   "Interbank_6M" "Interbank_6M" "Interbank_6M"        "Loans_Total_ln" "Loans_Total_ln" "Loans_Total_ln"     
[3,] "Loans_Total_ln" "USDEUR_EoP"   "CPI_ln"       "Ratio_Re_New_Cars_Y" "USDEUR_EoP"     "CPI_ln"         "Ratio_Re_New_Cars_Y"
     [,8]         [,9]                  [,10]                 [,11]            [,12]            [,13]                 [,14]         
[1,] "HPI_Y_ln"   "HPI_Y_ln"            "HPI_Y_ln"            "Interbank_6M"   "Interbank_6M"   "Interbank_6M"        "Interbank_6M"
[2,] "USDEUR_EoP" "USDEUR_EoP"          "CPI_ln"              "Loans_Total_ln" "Loans_Total_ln" "Loans_Total_ln"      "USDEUR_EoP"  
[3,] "CPI_ln"     "Ratio_Re_New_Cars_Y" "Ratio_Re_New_Cars_Y" "USDEUR_EoP"     "CPI_ln"         "Ratio_Re_New_Cars_Y" "CPI_ln"      
     [,15]                 [,16]                 [,17]            [,18]                 [,19]                 [,20]                
[1,] "Interbank_6M"        "Interbank_6M"        "Loans_Total_ln" "Loans_Total_ln"      "Loans_Total_ln"      "USDEUR_EoP"         
[2,] "USDEUR_EoP"          "CPI_ln"              "USDEUR_EoP"     "USDEUR_EoP"          "CPI_ln"              "CPI_ln"             
[3,] "Ratio_Re_New_Cars_Y" "Ratio_Re_New_Cars_Y" "CPI_ln"         "Ratio_Re_New_Cars_Y" "Ratio_Re_New_Cars_Y" "Ratio_Re_New_Cars_Y"

我试图将数据拆分成列表,并将它们折叠成公式。例如,取[[3]][, 1],我有以下内容:

HPI_Y_ln
Interbank_6M
Loans_Total_ln

我想将这些与+粘贴在一起,然后添加一个因变量。我目前拥有的是:

indep_vars = paste(myCombos[[3]][, 1], collapse = " + ")
formulaToProcess = paste0(DEPENDENT_VARIABLE, " ~ ", indep_vars)

"Unemployment ~ HPI_Y_ln + Interbank_6M + Loans_Total_ln"

但是我想对所有的字符串都这样做。(即Map列表,然后Map“列”。
数据:

myCombos = list(structure(c("HPI_Y_ln", "Interbank_6M", "Loans_Total_ln", 
"USDEUR_EoP", "CPI_ln", "Ratio_Re_New_Cars_Y"), dim = c(1L, 6L
)), structure(c("HPI_Y_ln", "Interbank_6M", "HPI_Y_ln", "Loans_Total_ln", 
"HPI_Y_ln", "USDEUR_EoP", "HPI_Y_ln", "CPI_ln", "HPI_Y_ln", "Ratio_Re_New_Cars_Y", 
"Interbank_6M", "Loans_Total_ln", "Interbank_6M", "USDEUR_EoP", 
"Interbank_6M", "CPI_ln", "Interbank_6M", "Ratio_Re_New_Cars_Y", 
"Loans_Total_ln", "USDEUR_EoP", "Loans_Total_ln", "CPI_ln", "Loans_Total_ln", 
"Ratio_Re_New_Cars_Y", "USDEUR_EoP", "CPI_ln", "USDEUR_EoP", 
"Ratio_Re_New_Cars_Y", "CPI_ln", "Ratio_Re_New_Cars_Y"), dim = c(2L, 
15L)), structure(c("HPI_Y_ln", "Interbank_6M", "Loans_Total_ln", 
"HPI_Y_ln", "Interbank_6M", "USDEUR_EoP", "HPI_Y_ln", "Interbank_6M", 
"CPI_ln", "HPI_Y_ln", "Interbank_6M", "Ratio_Re_New_Cars_Y", 
"HPI_Y_ln", "Loans_Total_ln", "USDEUR_EoP", "HPI_Y_ln", "Loans_Total_ln", 
"CPI_ln", "HPI_Y_ln", "Loans_Total_ln", "Ratio_Re_New_Cars_Y", 
"HPI_Y_ln", "USDEUR_EoP", "CPI_ln", "HPI_Y_ln", "USDEUR_EoP", 
"Ratio_Re_New_Cars_Y", "HPI_Y_ln", "CPI_ln", "Ratio_Re_New_Cars_Y", 
"Interbank_6M", "Loans_Total_ln", "USDEUR_EoP", "Interbank_6M", 
"Loans_Total_ln", "CPI_ln", "Interbank_6M", "Loans_Total_ln", 
"Ratio_Re_New_Cars_Y", "Interbank_6M", "USDEUR_EoP", "CPI_ln", 
"Interbank_6M", "USDEUR_EoP", "Ratio_Re_New_Cars_Y", "Interbank_6M", 
"CPI_ln", "Ratio_Re_New_Cars_Y", "Loans_Total_ln", "USDEUR_EoP", 
"CPI_ln", "Loans_Total_ln", "USDEUR_EoP", "Ratio_Re_New_Cars_Y", 
"Loans_Total_ln", "CPI_ln", "Ratio_Re_New_Cars_Y", "USDEUR_EoP", 
"CPI_ln", "Ratio_Re_New_Cars_Y"), dim = c(3L, 20L)))
3z6pesqy

3z6pesqy1#

您可以在lapplyapply的组合中使用reformulate

myformulas <- lapply(myCombos, 
                     \(combos, env = env) apply(combos, 2, reformulate, "Unemployment", env = env),
                     env = parent.frame())
myformulas[[1]][[1]]
#> Unemployment ~ HPI_Y_ln
#> <environment: 0x000001987ec71ba0>
myformulas[[3]][[1]]
#> Unemployment ~ HPI_Y_ln + Interbank_6M + Loans_Total_ln
#> <environment: 0x000001987ec71ba0>

环境不是强制性的,这取决于你以后如何使用它。它也应该这样工作:

myformulas <- lapply(myCombos, \(combos) apply(combos, 2, reformulate, "Unemployment"))

相关问题