我有一个名为“prob”的data.frame,有3列概率。
A B C
1 0.346 0.629 0.026
2 0.377 0.529 0.094
3 0.454 0.495 0.051
4 0.338 0.604 0.058
5 0.616 0.331 0.054
我想从每行(A,B,C)中抽取一个项目。所以我应用以下功能:
sapply(prob[,2:5],
function(p) sample(x = c(0:2), size = 1, prob = p))
R返回错误:
sample.int中的错误(长度(x),大小,替换,概率):不正确 概率数
我该如何解决这个问题?谢谢!
答案 0 :(得分:2)
df <- structure(list(A = c(0.346, 0.377, 0.454, 0.338, 0.616), B = c(0.629, 0.529, 0.495, 0.604, 0.331), C = c(0.026, 0.094, 0.051, 0.058, 0.054)), .Names = c("A", "B", "C"), class = "data.frame", row.names = c("1", "2", "3", "4", "5"))
apply(df, 1, function(x) sample(names(df), 1, prob = x))
输出
1 2 3 4 5
"B" "C" "A" "A" "B"