On Sep 14, 2009, at 5:14 PM, <edche...@gmail.com> <edche...@gmail.com>
wrote:
thank you all for your help. I do know how to use which() but my
problem is that I am writing a function in which this is just part
of it. After seeing the (a-b)[b<a], it gives the wrong index number
for which is negative and which is positive.
Can you explain what you mean? There are no index numbers. The (a-b)
[b<a] version skipped the generation of index numbers entirely and
gives you the _values_ you had asked for. The expression b<a which
would only be true when the difference is less than zero gets turned
into a logical vector. This then is fed to the extract function for
the vector (a-b) with logical indexing and only returns the positive
values.
?"["
> b<a
[1] TRUE FALSE FALSE TRUE TRUE FALSE FALSE
I am not sure why that is, but the which function does give the
correct index number. I guess what I want is to be able to save two
vectors of index and use them to reference the raw data base for
further calculation.
That was not at all clear from your posting. You said you wanted
values 1,3,1. Perhaps:
negidx <- which(a<b)
posidx <- which(b<a)
datafrm[negidx, ]
datafrm[posidx, ]
One vector for all the negative values and one for all the positive
ones.
On Mon, Sep 14, 2009 at 4:16 PM, David Winsemius <dwinsem...@comcast.net
> wrote:
On Sep 14, 2009, at 3:02 PM, Jorge Ivan Velez wrote:
Hi Edward,
Here is a suggestion:
a = c(4,5,1,7,8,12,39)
b = c(3,7,8,4,7,25,78)
d <- a-b
d[which(d>0)]
# [1] 1 3 1
#Or even:
d <- (a-b)[which((a-b)>0)]
d
#[1] 1 3 1
HTH,
Jorge
On Mon, Sep 14, 2009 at 2:50 PM, Edward Chen <edche...@gmail.com>
wrote:
I have a code:
*a = c(4,5,1,7,8,12,39)
b = c(3,7,8,4,7,25,78)
d =a-b
for(i in 1:length(d)){
if(d[i]>0){x = list(d[i])
print(x)}
else{y = list(d[i])
print(y)}}
the results are:
[[1]]
[1] 1
[[1]]
[1] -2
[[1]]
[1] -7
[[1]]
[1] 3
[[1]]
[1] 1
[[1]]
[1] -13
[[1]]
[1] -39
which will tell me what d is. but is it possible to output the order
in
which the difference is in the vector d?
for example I would want to see x = 1,3,1 and they are from d[1],
d[4],
d[5].
This is just a crude example I thought of to help me do something more
complicated.
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
David Winsemius, MD
Heritage Laboratories
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.