【发布时间】:2016-10-21 03:54:33
【问题描述】:
我有一个这样的数据框:
df <- data.frame(size_upms = c(126, 123, 148),
electric_mean = c(0.716756756756757,0.647859922178988, 0.726313694267516),
gas_mean = c(0.273513513513513,0.322679266259033, 0.259554140127389),
firewood_mean = c(0, 0.00111172873818788,0.00179140127388535))
# df
# size_upms electric_mean gas_mean firewood_mean
#1 126 0.7167568 0.2735135 0.000000000
#2 123 0.6478599 0.3226793 0.001111729
#3 148 0.7263137 0.2595541 0.001791401
我想使用 mapply 的每一行的参数获取样本
l <- mapply(sample,c("electric","gas","firewood"),df$size_upms,TRUE,
c(df$electric_mean,df$gas_mean,df$firewood_mean))
但我收到此错误:
#Error in sample.int(length(x), size, replace, prob) :
# too few positive probabilities
但是,如果我将示例函数应用于每一行,它就会起作用:
sample(c("electric","gas","firewood"),df$size_upms[1],TRUE,
c(df$electric_mean[1],df$gas_mean[1],df$firewood_mean[1]))[1:5]
#[1] "gas" "electric" "electric" "gas" "electric"
sample(c("electric","gas","firewood"),df$size_upms[2],TRUE,
c(df$electric_mean[2],df$gas_mean[1],df$firewood_mean[2]))[1:5]
#[1] "electric" "gas" "gas" "gas" "electric"
sample(c("electric","gas","firewood"),df$size_upms[3],TRUE,
c(df$electric_mean[3],df$gas_mean[3],df$firewood_mean[1]))[1:5]
#[1] "electric" "electric" "gas" "electric" "electric"
但我想使用 mapply,因为我想将它应用到大数据框
我做错了什么?
【问题讨论】: