R:在 R 脚本中的列上循环函数

R: Loop function over columns in a R script

假设我们有以下 table,其中每两对变量要相互测试(原始 table 有更多的列):http://pastebin.com/igeMTaSB

我如何在 R 中创建一个循环,以便它在脚本中的每一行或两行应用一个函数?

示例代码:

library(urca)
library(lmtest)

# Load data (See link)

table = read.csv("test.csv", header = TRUE, sep=",")
table = data.frame(table)
table

# For each column in the table (a1-d2), do
VARselect(table$column,lag.max = 10,type="both")

# For each two sequent pairs in the table (a1+a2, b1+b2,c1+c2,d1+d2), do
grangertest(table$a1, table$a2, order = 1, na.action = na.omit)

对于单变量情况,使用sapplylapply,例如:

myVarSel <- lapply(table, function(i) VARselect(i,lag.max = 10,type="both"))

如果您的变量对位于相邻位置(第 1,2 和 3,4 和 5,6 列),您可以按如下方式使用 lapply

myGtests <- lapply(seq(1, 5, 2), function(i) grangertest(table[[i]], table[[i+1]], order = 1,
                                             na.action = na.omit))

如果变量以不同的方式排列,您可以使用 names(df) 上的 grep 之类的工具来定位它们。在 lapply.

中提取

lapply函数returns一个列表,其中每个元素都是相应函数的结果。