我有一个大型数据框,我正在尝试为特定子集的特定数据列分配值 .
subset(P2Y12R_binding_summary,(SYSTEM=="4NTJ")&(VARIANT=="D294N"))
SYSTEM VARIANT MODEL EPSIN INP dE_water_free dE_ERR_water_free dE_water_periodic dE_ERR_water_periodic
1 4NTJ D294N LVLSET 1 1 -42.155 29.28460 -42.205 29.52604
2 4NTJ D294N LVLSET 1 2 -34.225 29.75176 -34.235 29.96571
3 4NTJ D294N LVLSET 20 1 -65.163 40.62241 -65.163 40.52564
4 4NTJ D294N LVLSET 20 2 -57.454 41.04459 -57.454 41.26962
5 4NTJ D294N SES 1 1 -23.406 30.56636 -23.335 30.75794
6 4NTJ D294N SES 1 2 -15.434 30.70035 -15.414 30.85944
7 4NTJ D294N SES 20 1 -64.351 40.65919 -64.350 40.51345
8 4NTJ D294N SES 20 2 -56.342 41.23456 -56.542 41.21865
现在假设我使用了一个新的列添加到框架(Ki_expt)
P2Y12R_binding_summary$Ki_expt <- 0
并且我想仅为与上面的子集对应的行更新此列的值 .
尝试天真的方法失败了:
>subset(P2Y12R_binding_summary,(SYSTEM=="4NTJ")&(VARIANT=="D294N"))$Ki_expt = 42.2
要么
>subset(P2Y12R_binding_summary,(SYSTEM=="4NTJ")&(VARIANT=="D294N"))$Ki_expt <- 42.2
两者都会产生错误消息:
Error in subset(P2Y12R_binding_summary, (SYSTEM == "4NTJ") & (VARIANT == :
could not find function "subset<-"
有谁知道这样做的适当方法?显然,有可能使用for循环,但这似乎相当笨拙并且可能会非常缓慢(正如之前的经验似乎表明的那样) .
1 回答
如果速度是一个问题,我会期待
data.table
(我通常看那里) .请注意,您只需设置一次Dig() . 之后只需使用dummydf调用你的DT [子集,LHS名称:= RHS值]