[R] dificult loop "for"
David Winsemius
dwinsemius at comcast.net
Mon Aug 24 03:11:22 CEST 2009
On Aug 23, 2009, at 4:34 PM, Grzes wrote:
>
> Hi,
> My english isn't briliant and my problem is very dificult to
> descripe but I
> try ;)
> My first question is: May I write loop "for" like this or similar -
> for (i
> in sth : sth[length(sth)], k in sth else : length(sth else) ) -
> I'd like
> to have two independent conditions in the same loop "for".
Pretty sure the language has not accommodated you for that wish yet.
You are going to need extra inner "{for"'s and another closing "}"'s.
That does not seem like a very large barrier to surmount.
Side question/whinge: where did the convention arise to use "sth" as
an abbreviation? I am a native English-speaker and it still confuses
me every time I see it. Why not just use "obj" or "item" or .....? I
keep thinking it has to do with a sequence of s-numbered things. (And
of course "sth else" got R-parsed as a logical construction.)
In R you probably want to use seq_along(e3) anyway, rather than
obj[1]:obj[length(obj)]
?seq_along
> e3 <- c(1,2,4)
> for (i in seq_along(e3) ) print(letters[e3[i]])
[1] "a"
[1] "b"
[1] "d"
>
> My secound question depend on program below. I'd like to write every
> result
> in matrix but I also want to call my function "odleg" use vector
> "e3" -
> exactly using values which are inside.
>
> Can anyone please guide me, how to do that?
> Thanks
>
> ## Function
> odleg <- function (Xa,Xb,Ya,Yb){
> d <- ((Xa-Xb)^2+(Ya-Yb)^2)^(1/2)
> return (d)
> }
>
> # Database
> ma=matrix(c(0.51139630,-0.12937287, 0.19530080,
> 0.02273691
> ,-0.43634186
> ,-0.01717149,-0.27597035,-0.41732933,-0.15476464,-0.15692965),nrow
> = 5, ncol=2)
untested mods: presumably "me1" has already been defined somewhere else?
e3<- c(1,2,4)
for (i in seq_along(e3) {
for (k in seq_along(e3) ) {
for (j in seq_along(e3)] {
for (l in seq_along(e3) ){
me1[k,l] = odleg
(nepitabds$points[e3[i],1], nepitabds$points[e3[j],1], nepitabds
$points[e3[i],2], nepitabds$points[e3[j],2])
}}}}
The concern I see with the last part of above code is that nepithabds
$points will need to be a matrix or list that responds properly to
[n,m] extraction. Is it? That would be possible as I understand the
rules of data.frames and lists, but it is a bit unusual.
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
More information about the R-help
mailing list