使用 sample() 函数应用于一系列列
Use sample() function to apply in a range of column
我有一个名为 "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 returns 一个错误:
Error in sample.int(length(x), size, replace, prob) : incorrect
number of probabilities
我该如何解决这个问题?谢谢!
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"
我有一个名为 "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 returns 一个错误:
Error in sample.int(length(x), size, replace, prob) : incorrect number of probabilities
我该如何解决这个问题?谢谢!
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"