我想从数据帧的每一行的某些列中获取值,并将它们用作函数的参数,以生成预测值的向量(每行一个) .
见下面的功能:
predicted_value_generator <- function(theta, tau_host, tau_targ, rho, pop_host, pop_targ, distance, R0){
return(theta * R0 * (pop_host^tau_host) * (pop_targ^tau_targ) * distance^(-rho))
}
Dataframes:
> pop_dist_data
X time_to_spread host_city_pop target_city_pop distance host_city_outgoing_flights target_city_incoming_flights flights_between Reproduction_number_R0
4 3 2 198100 622104 460.819668 9158 93861 6 1.365
5 4 2 198100 622104 460.819668 9158 93861 6 1.300
6 5 1 198100 622104 460.819668 9158 93861 6 1.300
7 6 2 198100 622104 460.819668 9158 93861 6 1.300
8 7 1 198100 622104 460.819668 9158 93861 6 1.300
> fit_data
X theta1 tau_host tau_targ rho
1 0 0.05447868 3.288922e-09 0.1491428 0.00820936
目前的做法:
pred_vals <- apply(pop_dist_data, 1, predicted_value_generator(fit_data[3], fit_data[4], fit_data[5], fit_data[6], pop_dist_data[,3], pop_dist_data[,4], pop_dist_data[,5], pop_dist_data[,9]))
预期的产出是这样的:
> pred_vals
[1] 0.43 0.96 0.33 0.5 0.27
无论行如何, fit_data
参数都是常量,但 pop_dist_data
参数应该在每个特定行使用该列值 .
最有效的方法是什么?
先感谢您 .
1 回答
这里有几个问题:
dat[:, j]
无效R语法 . 使用dat[, j]
R0
无处可定predicted_value_generator
已向量化,因此我们不需要apply
pop_dist_data
没有9列对于SO的
X
显示dput(X)
的输出来完成 . 我在最后的笔记中已经这样做了 .假设缺少
R0
已定义,请尝试将两个数据框绑定在一起,然后只调用具有相应列名的函数 .注意
可重复形式的输入: