R:如何为数据帧的每一行采样不同的列?

R: How to sample a different column for each row of a dataframe?

我想使用不同的权重为数据框的每一行采样不同的列。我尝试了一些事情但没有成功,包括查找类似的问题。我在下面展示了一个模拟 DF 和预期输出。

library(plyr)
set.seed(12345)
df1 <- mdply(data.frame(mean=c(10, 15, 12, 24)), rnorm, n = 5, sd = 1)
df1

我想要一个矢量化解决方案(希望如此)来对每一行从 V1 到 V5 的一列进行采样。抽样的权重是相关行从 V1 到 V5 的每个单元格中的值。实际的数据框可能有几百万行。示例输出如下所示。

f_col <- c(10,15,12,24)
sampled_column <- c("V3", "V1", "V5", "V5")

output_df1 <- data.frame("mean" = f_col, "result" = sampled_column)
output_df1

sample you can use prob to weight your sample probability. To make this for every row you can use apply.

output_df1 <- data.frame("mean"=df1$mean, "result"=apply(df1[,-1], 1, function(x) {sample(names(x), 1, prob=x)}))