On Apr 17, 2012, at 12:13 AM, Worik R wrote:
After a lot of processing I get a matrix into M. I expected each
row and
column to be a vector. But it is a list.
This behavior is not the result of limitation in how R's sapply might
have processed a purely numeric set of results, but is because you
(probably) returned a hetergeneous set of classes rom you inner
function. Assuming that "last" is actually function(x){tail,1}, then
the structure of M is
str(M)
List of 6
$ : chr "aaa"
$ : num 0.224
$ : chr "bbb"
$ : num 0.768
$ : chr "ccc"
$ : num 0.904
- attr(*, "dim")= int [1:2] 2 3
- attr(*, "dimnames")=List of 2
..$ : chr [1:2] "Name" "Value"
..$ : chr [1:3] "aaa" "bbb" "ccc"
Had the result been a more homogeneous collection, I sapply would have
returned an array of atomic numeric vectors. Try just returning a
number:
> M2 <- sapply(Qm, function(nm, DF){last(DF[DF[,
"Name"]==nm,"Value"])}, DF)
> class(M)
[1] "numeric"
> str(M2)
Named num [1:3] 0.6184 0.0446 0.3605
- attr(*, "names")= chr [1:3] "aaa" "bbb" "ccc"
--
David.
R-Inferno says...
"Arrays (including matrices) can be subscripted with a matrix of
positive
numbers. The subscripting matrix has as many columns as there are
dimensions
in the array—so two columns for a matrix. The result is a vector
(not an
array)
containing the selected items."
My version of R:
version.string R version 2.12.1 (2010-12-16)
Here is an example...
Qm <- c("aaa", "bbb", "ccc")
DF <- data.frame(Name=sample(Qm, replace=TRUE, size=22),
Value=runif(22),
stringsAsFactors=FALSE)
M <- sapply(Qm, function(nm, DF){last(DF[DF[, "Name"]==nm,])}, DF)
class(M)
[1] "matrix"
class(M[,1])
[1] "list"
class(M[1,])
[1] "list"
M
aaa bbb ccc
Name "aaa" "bbb" "ccc"
Value 0.4702648 0.274498 0.5529691
DF
Name Value
1 ccc 0.99948920
2 aaa 0.51921281
3 aaa 0.10803943
4 aaa 0.82265847
5 ccc 0.83237260
6 bbb 0.88250933
7 aaa 0.41836131
8 aaa 0.66197290
9 ccc 0.01911771
10 ccc 0.99994699
11 bbb 0.35719884
12 ccc 0.86274858
13 bbb 0.57528579
14 aaa 0.12452158
15 aaa 0.44167731
16 aaa 0.11660019
17 ccc 0.55296911
18 aaa 0.12796890
19 bbb 0.44595741
20 bbb 0.93024768
21 aaa 0.47026475
22 bbb 0.27449801
[[alternative HTML version deleted]]
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
David Winsemius, MD
West Hartford, CT
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.