1
我已经写了一个R循环,并将它变成了一个接收数据帧的函数,原始代码和数据帧如下所示。我们的目标是重复这个函数或循环1000次,最终得到一个数据框,其中有1000列表示每个row.name的rowsums。R:多次复制一个循环或函数并将结果添加到数据帧中每次
我的目标,是数据帧,看起来像这样
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为一个列表。 LOOP的
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)
输出等级总和为每行中的每个row.name 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次,并将每次循环运行时的等级总和列追加到数据帧或复制功能模拟1000次,并将所有结果转换为可以工作的数据帧。所以如果任何人都可以帮助我完成这项任务,那就太好了
任何帮助都非常感谢。
谢谢。并没有完全使用该代码,但它确实对我有用! – CadisEtRama 2013-04-06 19:12:31