Skip to content

Help with "For" instruction

5 messages · ADias, Daniel Nordlund, David Winsemius

#
Hi,

I am having a problem in doing something similar to this example:

Suppose I have this vector a, and from it I wish to create 5 other vector
each one with less one value than what object a has

So I have "a"
a<-c(1,2,3,4,5)

and I want

a1 that shoud have (2,3,4,5)
a2 that should have (1,3,4,5)
a3 that should have (1,2,4,5)
a4 that should have (1,2,3,5)
a5 that should have (1,2,3,4)

I have tried like this but with no luck


For ( i in 1:5) {
a<-c(1,2,3,4,5)
a((i)<-a[-i]
}

Is there a way to do this?

thank you

A.Dias
#
Does this do what you want?

for(i in 1:length(a)) assign(paste('a', i, sep=''), a[-i])

Hope this is helpful,

Dan

Daniel Nordlund
Bothell, WA USA
#
On Jan 4, 2011, at 1:00 AM, ADias wrote:

            
Dan showed you a method using assign (since that is what is needed for  
what you asked for) but you would get a more flexible result if you  
used a structure that could be easily indexed such as a matrix or list:
 > A <- sapply(1:5, function(i) a[-i])
 > colnames(A) <- paste("a", 1:5, sep="")
 > A
      a1 a2 a3 a4 a5
[1,]  2  1  1  1  1
[2,]  3  3  2  2  2
[3,]  4  4  4  3  3
[4,]  5  5  5  5  4

So:
 > A[ ,"a1"]
[1] 2 3 4 5

  
    
#
Hi,

Still with the above problem:

But for instance, i have a data base with 30 variables and I created an
object each with one varibale missing:

DataBase - has 30 variables
DataBase1 has 29 variables with the 1st variable gone
DataBase2 has 29 variables with the 2nd variable gone

for(i in 1:length(database)) assign(paste("database",i,sep=""),database[-i])


Now, I wish to create the 30 distance matrix:

for (i in 1:length(database))
assign(paste("distancematrix",i,sep=""),
dist(database[i]))

But doing like this - database[i] - I am just refering to the 1st value on
the object database and not to the entire database i.

How do I do this?

thanks
Regards,
A.Dias