[R] double vs. list
Liaw, Andy
andy_liaw at merck.com
Fri Mar 12 16:08:09 CET 2004
> From: David Andel
>
> Hi all
>
> I've got trouble with getting a "list" object and not being able to
> change that:
>
> Lets say x is a simple matrix and I want to remove all
> elements <3 to get
> 3
> 5 7
>
> > x <- matrix(c(1,2,3,5,1,7), nrow=2, ncol=3, byrow=T)
> > x
> [,1] [,2] [,3]
> [1,] 1 2 3
> [2,] 5 1 7
> > typeof(x)
> [1] "double"
> > y <- sapply(c(1,2), function(i) which(x[i,]<3))
> > y
> [[1]]
> [1] 1 2
>
> [[2]]
> [1] 2
>
> > typeof(y)
> [1] "list"
>
> Of course I could remove these elements right away and produce a "x"
> without elements <3, but also of type "list".
> But because rule will be more complicated than this I need to
> know the
> elements to remove explicitely first.
>
> Now when trying to remove elements 1 and 2 from x[1,], I get an error:
> > y[1]
> [[1]]
> [1] 1 2
>
> > x[1,][-y[1]]
> Error in -y[1] : Invalid argument to unary operator
>
> But this works:
>
> > x[1,][-c(1,2)]
> [1] 3
>
> What can I do differently?
Use double brackets to access a list component. Single bracket gives you
back a list with one component.
I.e., try:
x[1,][-y[[1]]]
And BTW, isn't this really what you want?
> apply(x, 1, function(x) x[x>=3])
[[1]]
[1] 3
[[2]]
[1] 5 7
HTH,
Andy
>
> Thanks,
> David
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>
>
------------------------------------------------------------------------------
Notice: This e-mail message, together with any attachments,...{{dropped}}
More information about the R-help
mailing list