【发布时间】:2016-01-26 15:21:57
【问题描述】:
我正在尝试计算数据框中行的值。 基本上我有一个数据框,其中包含 5 列,0 或 1(存在/不存在)。我想在这 5 列上随机化这些值的顺序,对这些列应用计算,将其复制 1000 次,然后计算每列不同计算的平均值,然后将这些值相加成每行一个值。
我尝试使用 lapply 和 apply 执行此操作,但不知何故无处可去。我设法用 for 循环做到了,但我想知道是否有更短/更好的方法。
这就是我最终得到的并根据需要工作:
> df <- data.frame(t(replicate(10,sample(c(0,1),5,replace=TRUE))))
> df
X1 X2 X3 X4 X5
1 1 1 0 1 1
2 1 1 1 0 0
3 0 0 0 1 0
4 0 1 1 1 0
5 0 0 1 0 1
6 0 1 1 1 0
7 0 0 1 0 1
8 0 0 0 0 1
9 1 0 0 1 0
10 0 1 0 1 1
> for (i in 1:nrow(df)){
+ v<-sum(
+ rowMeans(
+ replicate(1000,{
+ sample(as.numeric(df[i,c("X1","X2","X3","X4","X5")]),5, replace=FALSE)*c(5,4,3,2,1)
+ }
+ )
+ )
+ )
+ df[i,c("tot")]<-v
+ }
> df
X1 X2 X3 X4 X5 tot
1 1 1 0 1 1 12.0184
2 1 1 1 0 0 8.9786
3 0 0 0 1 0 3.0138
4 0 1 1 1 0 9.0013
5 0 0 1 0 1 6.0196
6 0 1 1 1 0 9.0227
7 0 0 1 0 1 5.9837
8 0 0 0 0 1 3.0063
9 1 0 0 1 0 6.0069
10 0 1 0 1 1 9.0032
【问题讨论】:
标签: r