[R] Why does matrix selection behave differently when using which?
Berend Hasselman
bhh at xs4all.nl
Mon Dec 17 20:39:45 CET 2012
On 17-12-2012, at 20:22, Asis Hallab wrote:
> Dear R community,
>
> I have a medium sized matrix stored in variable "t" and a simple function "
> countRows" (see below) to count the number of rows in which a selected
> column "C" matches a given value. If I count all rows matching all pairwise
> distinct values in the column "C" and sum these counts up, I get the number
> or rows of "t". If I delete the "which" calls from function "countRows" the
> resulting sum of matching row numbers is much greater than the number of
> rows in "t".
>
> The table "t" I use can be downloaded from here:
> https://github.com/groupschoof/PhyloFun/archive/test_selector.zip
> Unzip the file and read in the table "t" using t <- read.table("test.tbl")
>
> The above function "sumRows" is defined as follows:
> sumRows <- function( tbl, ps ) {
> sum(
> sapply(ps,
> function(x) {
> t <- if ( is.na(x) ) {
> tbl[ which( is.na(tbl[ , "Domain.Architecture.Distance" ]) ), ,
> drop=F]
> } else {
> tbl[ which( tbl[ , "Domain.Architecture.Distance" ] == x ), ,
> drop=F]
> }
> nrow(t)
> }
> )
> )
> }
>
And how are we supposed to call sumRows()?
sumRows(???, ???
Berend
More information about the R-help
mailing list