这是示例数据:
myd <- data.frame (matrix (sample (c("AB", "BB", "AA"), 100*100,
replace = T), ncol = 100))
variablenames= paste (rep (paste ("MR.", 1:10,sep = ""),
each = 10), 1:100, sep = ".")
names(myd) <- variablenames
每个变量都有一个组,这里我们有十个组。因此,该数据框中每个变量的组索引如下:
group <- rep(1:10, each = 10)
因此变量名称和组
data.frame (group, variablenames)
group variablenames
1 1 MR.1.1
2 1 MR.1.2
3 1 MR.1.3
4 1 MR.1.4
5 1 MR.1.5
6 1 MR.1.6
7 1 MR.1.7
8 1 MR.1.8
9 1 MR.1.9
10 1 MR.1.10
11 2 MR.2.11
<<<<<<<<<<<<<<<<<<<<<<<<
100 10 MR.10.100
每个组意味着以下步骤将分别应用于变量组。
我有更长的功能可以工作以下是简短的示例:
函数同时考虑两个变量
myfun <- function (x1, x2) {
out <- NULL
out <- paste(x1, x2, sep=":")
# for other steps to be performed here
return (out)
}
# group 1
myfun (myd[,1], myd[,2]); myfun (myd[,3], myd[,4]); myfun (myd[,5], myd[,6]);
myfun (myd[,7], myd[,8]); myfun (myd[,9], myd[,10]);
# group 2
myfun (myd[,11], myd[,12]); myfun (myd[,13], myd[,14]); .......so on to group 10 ;
这样,我需要为变量步行 1:10(即在第一组执行上述操作),然后是 11:20(第二组)。在这种情况下,组无关紧要,每组中的变量数可与一次(2)采用(考虑)的变量数(10)整除。
但是,在以下示例中,一次取 3 个变量 - 每组中的总变量数 (3),10/3,最后剩下一个变量。
函数同时考虑三个变量。
myfun <- function (x1, x2, x3) {
out <- NULL
out <- paste(x1, x2, x3, sep=":")
# for other steps to be performed here
return (out)
}
# for group 1
myfun (myd[,1], myd[,2], myd[,3])
myfun (myd[,4], myd[,5], myd[,6])
myfun (myd[,7], myd[,8], myd[,9])
# As there one variable left before proceedomg to second group, the final group will
have 1 extra variable
myfun (myd[,7], myd[,8], myd[,9],myd[,10] )
# for group 2
myfun (myd[,11], myd[,12], myd[,13])
# and to the end all groups and to end of the file.
我想通过用户定义的 n 个变量来循环这个过程,其中 n 可能是 1 到每个组中的最大变量数。
编辑:只是说明过程(例如,仅演示了第 1 组和第 2 组):