我在R中使用“by”函数来切分数据框并对不同部分应用函数,例如:
pairwise.compare <- function(x) {
Nright <- ...
Nwrong <- ...
Ntied <- ...
return(c(Nright=Nright, Nwrong=Nwrong, Ntied=Ntied))
}
Z.by <- by(rankings, INDICES=list(rankings$Rater, rankings$Class), FUN=pairwise.compare)
结果(Z.by)看起来像这样:
: 4
: 357
Nright Nwrong Ntied
3 0 0
------------------------------------------------------------
: 8
: 357
NULL
------------------------------------------------------------
: 10
: 470
Nright Nwrong Ntied
3 4 1
------------------------------------------------------------
: 11
: 470
Nright Nwrong Ntied
12 4 1
我想要的是将这个结果转换成数据框(不包含NULL项),使其看起来像这样:
Rater Class Nright Nwrong Ntied
1 4 357 3 0 0
2 10 470 3 4 1
3 11 470 12 4 1
我该如何做到这一点?
pairwise.compare
函数更改为返回这两个字段。否则,你将不得不使用一个lapply
程序(或plyr
)来获取列表名称和值(这是一个额外的步骤)。 - Shane