我一直在做:
mylist<- c(2,5,19,29)
Reduce("+", mylist)
Run Code Online (Sandbox Code Playgroud)
结果:
[1] 55
Run Code Online (Sandbox Code Playgroud)
没有任何问题.但是,我需要做一个中位数,所以我做了:
Reduce(median, mylist)
Run Code Online (Sandbox Code Playgroud)
这给了我:
[1] 2
Run Code Online (Sandbox Code Playgroud)
但答案应该是:
median(unlist(hom))
[1] 12
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么Reduce()这样做?
dam*_*ois 11
Reduce需要二进制操作.median不是.你正在计算的Reduce东西基本上median(2, median(5, median(19, 29)))是2因为第二个参数median被解释为median第二个参数'na.rm'.
Reduce(median, mylist) = median(2, median(5,median(19,29)))
= median(2, median(5,19))
= median(2, 5)
= 2
Run Code Online (Sandbox Code Playgroud)