[R] For loop with if else statement
Hans, I think your problem is that you don't use the variable which takes different values in your if statement your i changes values and has really nothing to do with your x variable (except the length part ). Also all the other variables need to be declared somehow - otherwise how can you store values in them??? So your first code may be something like that: t=c(1,2) for(i in 1:length(t)){ if (i==1) t[i]=i+1 else t[i]=i } t[1] 2 2 and your second code: a = c(1,2) b=c(1,2)for(i in 1:2){if (i==1){a[i]=ib[i]=i-1} else{ a[i]=i+1b[i]=i}c-list(a=a,b=b)} c$a[1] 1 3 c$b[1] 0 2 Also when you have only 2 possible values for i i don't think the second if is necessary. I hope this helps a little, although my explanation is not necessarily the best. Monica -- Message: 16Date: Tue, 4 Sep 2007 15:59:54 +0200From: Hans Ole ?rka [EMAIL PROTECTED]Subject: [R] For loop with if else statementTo: 'r-help@stat.math.ethz.ch' r-help@stat.math.ethz.chMessage-ID:[EMAIL PROTECTED]Content-Type: text/plain; charset=iso-8859-1 Hi,I try to make a simple for loop with a if else statement (First example - Below) and extend it to a more complex loop (Second example). However, my results #First example:x=c(1,2)t=for(i in 1:length(x)){if (x==1){a=x+1}elseif (x==2){a=x}} Returned from R:Warning messages:1: the condition has length 1 and only the first element will be used in: if (x == 1) {2: the condition has length 1 and only the first element will be used in: if (x == 1) { t[1] 2 3 However, the result i had liked to get was t=c(2,2) i.e. using the first function (a=x+1) for x[1] and (a=x) for x[2]. I can remove the Warnings by making: if (x[i]==1) etc. but this! do not make the results any better. #Second example:x=c(1,2)t-for(i in 1:length(x)){if (x==1){a=xb=x-1}elseif (x==2){a=x+1b=x}b-list(a=a,b=b)} Returned from R:Warning messages:1: the condition has length 1 and only the first element will be used in: if (x == 1) {2: the condition has length 1 and only the first element will be used in: if (x == 1) { t$a[1] 1 2 $b[1] 0 1 The result i like to get are $a =c(1,3) and $b=c(0,2) Probably there are couple of things that I do wrong and I appreciate all help! _ Discover the new Windows Vista [[alternative HTML version deleted]] __ R-help@stat.math.ethz.ch 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.
[R] For loop with if else statement
Hi, I try to make a simple for loop with a if else statement (First example - Below) and extend it to a more complex loop (Second example). However, my results #First example: x=c(1,2) t=for(i in 1:length(x)){ if (x==1){a=x+1}else if (x==2){a=x} } Returned from R: Warning messages: 1: the condition has length 1 and only the first element will be used in: if (x == 1) { 2: the condition has length 1 and only the first element will be used in: if (x == 1) { t [1] 2 3 However, the result i had liked to get was t=c(2,2) i.e. using the first function (a=x+1) for x[1] and (a=x) for x[2]. I can remove the Warnings by making: if (x[i]==1) etc. but this do not make the results any better. #Second example: x=c(1,2) t-for(i in 1:length(x)){ if (x==1){ a=x b=x-1}else if (x==2){ a=x+1 b=x} b-list(a=a,b=b) } Returned from R: Warning messages: 1: the condition has length 1 and only the first element will be used in: if (x == 1) { 2: the condition has length 1 and only the first element will be used in: if (x == 1) { t $a [1] 1 2 $b [1] 0 1 The result i like to get are $a =c(1,3) and $b=c(0,2) Probably there are couple of things that I do wrong and I appreciate all help! __ R-help@stat.math.ethz.ch 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] For loop with if else statement
On 9/4/2007 9:59 AM, Hans Ole Ørka wrote: Hi, I try to make a simple for loop with a if else statement (First example - Below) and extend it to a more complex loop (Second example). However, my results #First example: x=c(1,2) t=for(i in 1:length(x)){ if (x==1){a=x+1}else if (x==2){a=x} } Returned from R: Warning messages: 1: the condition has length 1 and only the first element will be used in: if (x == 1) { 2: the condition has length 1 and only the first element will be used in: if (x == 1) { t [1] 2 3 However, the result i had liked to get was t=c(2,2) i.e. using the first function (a=x+1) for x[1] and (a=x) for x[2]. I can remove the Warnings by making: if (x[i]==1) etc. but this do not make the results any better. x is a vector of length 2. Using a = x + 1 means that the entire vector a will be replaced by the entire vector x. You need to index each entry each time you use it, i.e. if (x[i] == 1) a[i] - x[i] + 1 else if (x[i] ==2]) a[i] - x[i] or more simply, throw away the loop, and use the ifelse function: a - ifelse( x == 1, x + 1, ifelse( x == 2, x, NA) ) (where I've used NA for the case where x is neither 1 nor 2.) Duncan Murdoch #Second example: x=c(1,2) t-for(i in 1:length(x)){ if (x==1){ a=x b=x-1}else if (x==2){ a=x+1 b=x} b-list(a=a,b=b) } Returned from R: Warning messages: 1: the condition has length 1 and only the first element will be used in: if (x == 1) { 2: the condition has length 1 and only the first element will be used in: if (x == 1) { t $a [1] 1 2 $b [1] 0 1 The result i like to get are $a =c(1,3) and $b=c(0,2) Probably there are couple of things that I do wrong and I appreciate all help! __ R-help@stat.math.ethz.ch 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. __ R-help@stat.math.ethz.ch 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.