R ループを作成し、それをデータフレームを受け取る関数に変換しました。元のコードとデータ フレームは以下のとおりです。目標は、この関数またはループを 1000 回繰り返して、各 row.name の行合計を表す 1000 列を含むデータ フレームになることです。
MY GOALは、このようなデータフレームです
row.names rsum_s1 rsum_s2 rsum_s3 rsum_s4.....rsum_s1000
kc231 40 57 15 34
kc25498 34 39 567 23
kc087398 28 3747 25 1938
x は元のデータ フレームで、次のようになります。
row.names val2 val4 val3 val4
kc231 1.62E-08 3.29E-37 1.36E-14 0.29692426
kc25498 4.93E-01 4.93E-01 4.93E-01 0.49330053
kc087398 3.50E-01 1.18E-22 1.71E-08 0.35011743
LOOP 私は最初に rsum_s をリストとして与えるための作品を書きました。
for(k in 1:length(colnames(x))) {
as.numeric(x[,k])
sample(x[,k])
x[,k]<-rank(x[,k],ties.method="min")
rsum_s<-rowSums(x)
LOOP の出力は、各行の各行のランク合計です。名前 ID: rsum_s
structure(c(47, 142, 82), .Names = c("kc231", "kc25498", "kc087398"))
LOOP を FUNCTION に変換
sim<-function(x) { #takes a data.frame
for(k in 1:length(colnames(x))) { #each column set as numeric
as.numeric(x[,k])
sample(x[,k]) #randomly shuffle values in each column
x[,k]<-rank(x[,k],ties.method="min") #rank each randomly shuffled columns
rsum_s<-rowSums(x) #take the sum of the rows
return(rsum_s)
}
}
関数の結果は、整数ではなく整数です。
sim(dataframe1)
kc231 kc25498 kc087398
18.24 37.47 32.350117
ここで何が間違っているのかわかりません。ループを 1000 回実行し、ループがデータ フレームに実行されるたびにランク合計の列を追加するか、関数 sim を 1000 回複製し、すべての結果を機能するデータ フレームに変換する必要があります。誰かがこのタスクを完了するのを手伝ってくれるなら、それは素晴らしいことです
どんな助けでも大歓迎です。