如何判断数据帧的所有colSums或rowSums(或其他聚合)在R中是否相等?

时间:2018-09-11 21:45:49

标签: r list dataframe vector equality

我不了解这种行为:

> a = c(1,1,1,1,1)
> (a==1)
[1] TRUE TRUE TRUE TRUE TRUE
> df = data.frame(a=c(1,2,3,4,5), b=c(6,7,8,9,10))
> df
  a  b
1 1  6
2 2  7
3 3  8
4 4  9
5 5 10
> colSums(df)
 a  b 
15 40 
> ndf = apply(df, 2, function(col){col/sum(col)})
> colSums(ndf)
a b 
1 1 
> (colSums(ndf) == 1)
    a     b 
 TRUE FALSE 
> typeof(a)
[1] "double"
> class(a)
[1] "numeric"
> typeof(colSums(ndf))
[1] "double"
> class(colSums(ndf))
[1] "numeric"
> b = c(1,1,1,2,1)
> all(b==1)
[1] FALSE
> (b==1)
[1]  TRUE  TRUE  TRUE FALSE  TRUE
> all(a==1)
[1] TRUE
> all(colSums(ndf)==1)
[1] FALSE

为什么不能在ab上运行的测试不能在colSums(ndf)上运行?

0 个答案:

没有答案