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.

Reply via email to