データの例を次に示します。
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
各変数にはグループがあり、ここでは10個のグループがあります。したがって、このデータフレームの各変数のグループインデックスは次のようになります。
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
各グループは、次の手順が変数のグループに個別に適用されることを意味します。
私はより長い機能を持っています以下は短い例です:
一度に2つの変数を考慮した関数
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)で割り切れます(2)。
ただし、一度に3つの変数を取得する次の例では、各グループの合計変数の数(3)、10/3で、最後に1つの変数が残っています。
一度に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だけがデモされています):