r - 如何在函数 (apaTables) 和循环中使用 paste()

r - How to use paste() within a function (apaTables) and loop

我正在尝试创建一个循环,该循环利用函数在 r 中使用 apaTable 库生成文档。

数据框(FinalDF)是一些分数。所有这些都是 0-100 范围内的数字。这些名字都是独一无二的,我在这里只是按编号引用它们。

library(apaTable)

FinalDF <- data.frame(replicate(10,sample(0:100,2000,rep=TRUE)))


for (j in 1:4){
for (i in 6:10){

  assign(paste(colnames(FinalDF)[j], colnames(FinalDF)[i], "lm.loop", sep = "."), lm(paste(colnames(FinalDF)[j], colnames(FinalDF)[i], sep = " ~ "), data = FinalDF))


}
  apa.reg.table(paste(paste(colnames(FinalDF)[[j]], colnames(FinalDF)[[6]], "lm.loop", sep = "."),                           paste(colnames(FinalDF)[[j]], colnames(FinalDF)[[7]], "lm.loop", sep ="."),
                       paste(colnames(FinalDF)[[j]], colnames(FinalDF)[[8]], "lm.loop", sep = "."),
                       paste(colnames(FinalDF)[[j]], colnames(FinalDF)[[9]], "lm.loop", sep = "."),
                       paste(colnames(FinalDF)[[j]], colnames(FinalDF)[[10]], "lm.loop", sep = "."), sep = " , "), filename = paste(colnames(FinalDF)[j], "Test.doc"))
}

不幸的是,我收到“错误:$ 运算符对于原子向量无效”

我不确定如何使用 paste() 函数来创建将在该函数中使用的模型的名称。我尝试了字符串、字符、删除引号以及我能找到的任何其他内容。没有任何效果!

最后,我试图创建一个回归 table,在同一个 table 上使用多个简单回归。 (该库在输出回归模型方面做得很好。)

例如,一个 table 将是 -

  • FinalDF[1] ~ FinalDF[6] -- REGRESSION RESULTS FORMATTED FROM apaTABLES
  • FinalDF[1] ~ FinalDF[7] -- REGRESSION RESULTS FORMATTED FROM apaTABLES
  • FinalDF[1] ~ FinalDF[8] -- REGRESSION RESULTS FORMATTED FROM apaTABLES
  • FinalDF[1] ~ FinalDF[9] -- REGRESSION RESULTS FORMATTED FROM apaTABLES
  • FinalDF[1] ~ FinalDF[10] -- REGRESSION RESULTS FORMATTED FROM apaTABLES

下一个是-

  • FinalDF[2] ~ FinalDF[6] -- REGRESSION RESULTS FORMATTED FROM apaTABLES
  • FinalDF[2] ~ FinalDF[7] -- REGRESSION RESULTS FORMATTED FROM apaTABLES
  • FinalDF[2] ~ FinalDF[8] -- REGRESSION RESULTS FORMATTED FROM apaTABLES
  • FinalDF[2] ~ FinalDF[9] -- REGRESSION RESULTS FORMATTED FROM apaTABLES
  • FinalDF[2] ~ FinalDF[10] -- REGRESSION RESULTS FORMATTED FROM apaTABLES

这将采用 APA 格式,这就是我使用 apaTable 库的原因。

以后希望能对同一个table进行多次回归,像这样-

  • FinalDF[1] ~ FinalDF[6] + FinalDF[7] + FinalDF[8] -- REGRESSION RESULTS FORMATTED FROM apaTABLES
  • FinalDF[1] ~ FinalDF[6] + FinalDF[7] + FinalDF[8] + FinalDF[9] -- REGRESSION RESULTS FORMATTED FROM apaTABLES
  • FinalDF[1] ~ FinalDF[6] + FinalDF[7] + FinalDF[8] + FinalDF[9] + FinalDF[10] -- REGRESSION RESULTS FORMATTED FROM apaTABLES
  • FinalDF[1] ~ FinalDF[6] + FinalDF[7] + FinalDF[8] + FinalDF[9] + FinalDF[10] + FinalDF[6]*FinalDF[7] -- REGRESSION RESULTS FORMATTED FROM apaTABLES
  • etc.

问题是当我通过 paste() 函数输入它们时,该函数似乎无法识别我正在创建的新数据框的名称。

谢谢!

您想要的简单表格可以很容易地生成,如下所示。然后,您可以使用例如中的表格应用任何 apaTable 函数apply 家庭功能。

library(dplyr)

v1 <- paste0("Col", 1:4)
v2 <- paste0("Col", 6:10)

v <- expand.grid(v1, v2, stringsAsFactors = FALSE) %>%
  arrange(Var1) %>%
  mutate(model = paste0(Var1, " ~ ", Var2))

有了这个输出:

> v
   Var1  Var2        model
1  Col1  Col6  Col1 ~ Col6
2  Col1  Col7  Col1 ~ Col7
3  Col1  Col8  Col1 ~ Col8
4  Col1  Col9  Col1 ~ Col9
5  Col1 Col10 Col1 ~ Col10
6  Col2  Col6  Col2 ~ Col6
7  Col2  Col7  Col2 ~ Col7
8  Col2  Col8  Col2 ~ Col8
9  Col2  Col9  Col2 ~ Col9
10 Col2 Col10 Col2 ~ Col10
11 Col3  Col6  Col3 ~ Col6
12 Col3  Col7  Col3 ~ Col7
13 Col3  Col8  Col3 ~ Col8
14 Col3  Col9  Col3 ~ Col9
15 Col3 Col10 Col3 ~ Col10
16 Col4  Col6  Col4 ~ Col6
17 Col4  Col7  Col4 ~ Col7
18 Col4  Col8  Col4 ~ Col8
19 Col4  Col9  Col4 ~ Col9
20 Col4 Col10 Col4 ~ Col10

这有帮助吗?

更新

data(mtcars)
v1 <- colnames(mtcars)[1:4]
v2 <- colnames(mtcars)[6:10]

v <- expand.grid(v1, v2, stringsAsFactors = FALSE) %>%
  arrange(Var1) %>%
  mutate(model = paste0(Var1, " ~ ", Var2))

结果如下。您也可以为您的数据对象执行此操作。

> v
   Var1 Var2       model
1    am   wt     am ~ wt
2    am qsec   am ~ qsec
3    am   vs     am ~ vs
4    am   am     am ~ am
5    am gear   am ~ gear
6  gear   wt   gear ~ wt
7  gear qsec gear ~ qsec
8  gear   vs   gear ~ vs
9  gear   am   gear ~ am
10 gear gear gear ~ gear
11 qsec   wt   qsec ~ wt
12 qsec qsec qsec ~ qsec
13 qsec   vs   qsec ~ vs
14 qsec   am   qsec ~ am
15 qsec gear qsec ~ gear
16   vs   wt     vs ~ wt
17   vs qsec   vs ~ qsec
18   vs   vs     vs ~ vs
19   vs   am     vs ~ am
20   vs gear   vs ~ gear
21   wt   wt     wt ~ wt
22   wt qsec   wt ~ qsec
23   wt   vs     wt ~ vs
24   wt   am     wt ~ am
25   wt gear   wt ~ gear