我跟随DF。
> x
Members Exp
1 A 2.575374
2 B 5.764491
3 C 7.576994
4 D 5.834233
5 E 3.977425
"实验"是泊松分布变量。我现在想在整个表格上进行模拟,并查看"会员"每个等级的次数。
期望的结果将是:
Rank A B C D E 1 10% 2 18% 3 42% 4 18% 5 12% 100%
真的很感激帮助:)
道歉,但对R来说很新。
sim <- 100
a <- matrix(nrow = sim, ncol = nrow(x))
for (i in nrow(x)){
a[,i] <<- rpois(sim, x[i,2])
}
colnames(a) <- x[,1]
我在这里收到错误信息,
Error in a[, i] <<- rpois(sim, x[i, 2]) : object 'a' not found
当我在一个循环中没有它时它起作用..想法是计算行数&#34;会员&#34;排名第1,第2,第3,第4和第5。
现在使用此代码
sim <- 100
a <- matrix(nrow = sim, ncol = nrow(x))
for (i in 1:nrow(x)){
a[,i] <- rpois(sim, x[i,2])
}
colnames(a) <- x[,1]
这给了我这个数据框
> head(a)
A B C D E
[1,] 0 9 8 3 4
[2,] 2 10 6 3 4
[3,] 3 6 7 9 1
[4,] 2 3 4 6 1
[5,] 3 4 6 7 3
[6,] 4 3 12 5 3
第1行是模拟1,第2行模拟2等等。现在我想看看A是Max的次数。
我需要做的是创建一个大小相等的逻辑矩阵,我在每行上应用Max,然后计算每列的平均值。但Max只返回每行的最大值,我想在每个单元格中返回0或1 ..
答案 0 :(得分:1)
试试这个:
...
sim <- 100
a <- matrix(nrow = sim, ncol = nrow(x))
for (i in nrow(x)){
a[,i] <- rpois(sim, x[i,2])
}
答案 1 :(得分:1)
这确实如此,但希望不要使用for循环:)
> x
Members Exp
1 A 2.575374
2 B 5.764491
3 C 7.576994
4 D 5.834233
5 E 3.977425
sim <- 100
a <- matrix(nrow = sim, ncol = nrow(x))
b <- matrix(nrow = sim, ncol = nrow(x))
for (i in 1:nrow(x)){
a[,i] <- rpois(sim, x[i,2])
}
colnames(a) <- x[,1]
for (j in 1:sim){
for (k in 1:nrow(x)){
b[j,k] <- as.numeric(a[j,k]) == max(a[j,])
}
}
head(b)
> head(b)
[,1] [,2] [,3] [,4] [,5]
[1,] FALSE FALSE TRUE FALSE FALSE
[2,] FALSE FALSE FALSE TRUE FALSE
[3,] FALSE FALSE TRUE FALSE FALSE
[4,] FALSE FALSE TRUE FALSE FALSE
[5,] FALSE FALSE FALSE TRUE FALSE
[6,] FALSE FALSE TRUE FALSE FALSE