[R] array manipulation simple questions

2009-02-23 Thread Λεωνίδας Μπαντής
 
Hi there,
 
I am pretty new to R. Actually I started using it yesterday. I have two 
questions:
 
1.   Suppose I have a<-c(1:10)  (or a<-array(c(1:10),dim=c(1,10)))
 
and I want to end up with vector b=[0 0 0 0 0 1 1 1 1 1]. i.e. I want to 
substitute alla elements that are <5 with 0 and >5 with 1.
 
I did this by using a for loop. Is there another function to use so as to avoid 
the "for"?
 
 
2.  Suppose I have a<-c(1,1,2,2,3,3)  (or array again)
 
And I want to place a "4,5" before every "2" and end up with a new "bigger" 
vector "b":
 
b=[1 1 4 5 2 4 5 2 3 3]
 
Also I want to find where the 2's in array "a" (if it was an array) are located 
i.e. positions 3,4.
 
 
Thanx very much in advance!!
 
P.S: Will you inform me via mail or should I visit any blog and post there my 
questions?
 
 


  
___ 
×ñçóéìïðïéåßôå Yahoo!; 
ÂáñåèÞêáôå ôá åíï÷ëçôéêÜ ìçíýìáôá (spam); Ôï Yahoo! Mail 
äéáèÝôåé ôçí êáëýôåñç äõíáôÞ ðñïóôáóßá êáôÜ ôùí åíï÷ëçôéêþí 
ìçíõìÜôùí http://login.yahoo.com/config/mail?.intl=gr

[[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.


Re: [R] array manipulation simple questions

2009-02-23 Thread jdeisenberg


Λεωνίδας Μπαντής wrote:
>  
> 1.   Suppose I have a<-c(1:10)  (or a<-array(c(1:10),dim=c(1,10)))
>  
> and I want to end up with vector b=[0 0 0 0 0 1 1 1 1 1]. i.e. I want to
> substitute alla elements that are <5 with 0 and >5 with 1.
> 

I think you mean >=5, not > 5.  In that case, try this:

b <- ifelse( a < 5, 0, 1) 
 

Λεωνίδας Μπαντής wrote:
> 
> 2.  Suppose I have a<-c(1,1,2,2,3,3)  (or array again)
>  
> And I want to place a "4,5" before every "2" and end up with a new
> "bigger" vector "b":
>  
> b=[1 1 4 5 2 4 5 2 3 3]
>  
> Also I want to find where the 2's in array "a" (if it was an array) are
> located i.e. positions 3,4.
> 

Not sure how to insert the 4,5, but this will find the where the 2's are:
which(a == 2)



-- 
View this message in context: 
http://www.nabble.com/array-manipulation-simple-questions-tp22173710p22175864.html
Sent from the R help mailing list archive at Nabble.com.

__
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.


Re: [R] array manipulation simple questions

2009-02-23 Thread Gabor Grothendieck
2009/2/23 Λεωνίδας Μπαντής :
>
> Hi there,
>
> I am pretty new to R. Actually I started using it yesterday. I have two 
> questions:
>
> 1.   Suppose I have a<-c(1:10)  (or a<-array(c(1:10),dim=c(1,10)))
>
> and I want to end up with vector b=[0 0 0 0 0 1 1 1 1 1]. i.e. I want to 
> substitute alla elements that are <5 with 0 and >5 with 1.
>
> I did this by using a for loop. Is there another function to use so as to 
> avoid the "for"?


(a>5)+0

# or

out <- as.numeric(a > 5)
if (is.matrix(a)) out <- matrix(a, 1)
out

>
>
> 2.  Suppose I have a<-c(1,1,2,2,3,3)  (or array again)
>
> And I want to place a "4,5" before every "2" and end up with a new "bigger" 
> vector "b":
>
> b=[1 1 4 5 2 4 5 2 3 3]

# return c(4, 5, 2) or x
f <- function(x) if (x==2) c(4:5, x) else x

# apply f to each element and
# if a is a matrix make output a matrix too

out <- unlist(sapply(a, f))
if (is.matrix(a)) out <- matrix(out, nrow(a))
out

>
> Also I want to find where the 2's in array "a" (if it was an array) are 
> located i.e. positions 3,4.

which(a == 2)

__
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.


Re: [R] array manipulation simple questions

2009-02-23 Thread andrew


On Feb 24, 3:57 pm, jdeisenberg  wrote:
> Λεωνίδας Μπαντής wrote:
>
> > 1.   Suppose I have a<-c(1:10)  (or a<-array(c(1:10),dim=c(1,10)))
>
> > and I want to end up with vector b=[0 0 0 0 0 1 1 1 1 1]. i.e. I want to
> > substitute alla elements that are <5 with 0 and >5 with 1.
>
> I think you mean >=5, not > 5.  In that case, try this:
>
> b <- ifelse( a < 5, 0, 1)

you could also use

b <- 1*(x >= 5) #the logical elements get converted to numeric

>
> Λεωνίδας Μπαντής wrote:
>
> > 2.  Suppose I have a<-c(1,1,2,2,3,3)  (or array again)
>
> > And I want to place a "4,5" before every "2" and end up with a new
> > "bigger" vector "b":
>
> > b=[1 1 4 5 2 4 5 2 3 3]
>
> > Also I want to find where the 2's in array "a" (if it was an array) are
> > located i.e. positions 3,4.
>
> Not sure how to insert the 4,5, but this will find the where the 2's are:
> which(a == 2)
>

you could use

b <- rep(a,times = 2*(a==2) + 1)
replace(b, which(b==2), c(4,5,2))

> --
> View this message in 
> context:http://www.nabble.com/array-manipulation-simple-questions-tp22173710p...
> Sent from the R help mailing list archive at Nabble.com.
>
> __
> r-h...@r-project.org mailing listhttps://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guidehttp://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

__
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.