过滤数据框中的值时出错

时间:2019-02-23 17:35:44

标签: r dataframe dplyr

Sample data(dd1)
"d" "sumMLE" "sumB" "n" "p_wj" "p_wj_log" "Omega_NB" "Omega_MLE"
"1" 1 -5.20994142259661 -5.14443748338538 1 0.666666666666667 -0.405465108108164 -5.54990259149355 -5.61540653070477
"2" 2 -6.5962357837165 -6.06072821525954 1 0.666666666666667 -0.405465108108164 -6.46619332336771 -7.00170089182467
"3" 3 -1.67397643357167 -2.09186406167839 1 0.666666666666667 -0.405465108108164 -2.49732916978656 -2.07944154167984
"4" 1 -5.20994142259661 -5.14443748338538 2 0.333333333333333 -1.09861228866811 -6.24304977205349 -6.30855371126472
"5" 2 -6.5962357837165 -6.06072821525954 2 0.333333333333333 -1.09861228866811 -7.15934050392765 -7.69484807238461
"6" 3 -1.67397643357167 -2.09186406167839 2 0.333333333333333 -1.09861228866811 -3.1904763503465 -2.77258872223978

我正在尝试对上述数据运行以下代码,但是我面临错误,尤其是在下面注释为

的行上
Error: Result must have length 2, not 6.

代码:

dd1$p_wj_log <- log(dd1$p_wj)
dd1$Omega_NB<-dd1$sumB+dd1$p_wj_log
dd1$Omega_MLE<-dd1$sumMLE+dd1$p_wj_log
maxMLE<-dd1 %>% group_by(dd1$d) %>% filter(dd1$Omega_MLE == max(dd1$Omega_MLE)) #this line shows error
maxBayesian<-dd1 %>% group_by(dd1$d) %>% filter(dd1$Omega_NB == max(dd1$Omega_NB)) #this line shows error

预期结果

maxMLE
"d" "sumMLE" "sumB" "n" "p_wj" "p_wj_log" "Omega_NB" "Omega_MLE"
"1" 1 -5.20994142259661 -5.14443748338538 1 0.666666666666667 -0.405465108108164 -5.54990259149355 -5.61540653070477
"2" 2 -6.5962357837165 -6.06072821525954 1 0.666666666666667 -0.405465108108164 -6.46619332336771 -7.00170089182467
"3" 3 -1.67397643357167 -2.09186406167839 1 0.666666666666667 -0.405465108108164 -2.49732916978656 -2.07944154167984


maxBE
"d" "sumMLE" "sumB" "n" "p_wj" "p_wj_log" "Omega_NB" "Omega_MLE"
"1" 1 -5.20994142259661 -5.14443748338538 1 0.666666666666667 -0.405465108108164 -5.54990259149355 -5.61540653070477
"2" 2 -6.5962357837165 -6.06072821525954 1 0.666666666666667 -0.405465108108164 -6.46619332336771 -7.00170089182467
"6" 3 -1.67397643357167 -2.09186406167839 2 0.333333333333333 -1.09861228866811 -3.1904763503465 -2.77258872223978

1 个答案:

答案 0 :(得分:1)

尝试以下操作:

maxMLE <- dd1 %>% group_by(d) %>% filter(Omega_MLE == max(Omega_MLE))

maxBayesianb <- dd1 %>% group_by(d) %>% filter(Omega_NB == max(Omega_NB))