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
我正在尝试创建一个循环,该循环利用函数在 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