Ooops, I edited the code wrong to make it more easier for interpretation and got X and Y's mixed up. Try this:
for(i in length(1:(nrow(X)))){ Y$IID1new <- ifelse((as.character(Y[,2]) == as.character(X[,i]) & Y$IID1new != ''), as.character(as.matrix(X[,(nrow(X)+i)])),'') } The second should be like this: Y$IID1new <- ifelse((as.character(Y[,2]) == as.character(X[,1])), as.character(as.matrix(X[,(nrow(X)+1)])),'') for(i in length(2:(nrow(X)))){ ifelse((as.character(Y[,i]) == as.character(X[,i])), Y$IID1new[is.na(Y$IID1new)] <- as.character(as.matrix(X[,(nrow(X)+i)])),'') } The reason why I'm selecting for number of rows seems a little odd here I know but in real life this actually relies on a third data frame, say Z, which for simplicity I didn't include here. But I only want to start looking at the Nth column after twice as many rows in Z. For instance, if Z has 4 rows, I want to take values for IID1new starting from column 9 in X to make IID1new in Y. Does that make sense? Will this cause a problem? So maybe it will probably be more like this if there were a Z for(i in length(1:(2*nrow(Z)))){ Y$IID1new <- ifelse((as.character(Y[,2]) == as.character(X[,i]) & Y$IID1new != ''), as.character(as.matrix(X[,(2*nrow(Z)+i)])),'') } But essentially what I would like is this: FID IID IID1new FAM01 samas4 samas4_father FAM01 samas5 samas5_mother FAM01 samas6 samas6_sibling I hope this is a little clearer... Let me know if there are more errors. K. On Mon, Sep 29, 2014 at 2:39 AM, PIKAL Petr <petr.pi...@precheza.cz> wrote: > Hi > > Please, be more clear in what do you want. I get many errors trying your code > and your explanation does not help much. > >> for(i in length(1:(2*nrow(X)))){ > + Y$IID1new <- ifelse((as.character(Y[,2]) == as.characterXl[,i]) & > X$IID1new != '') , as.character(as.matrix(X[,(2*nrow(X)+i)])),'') > Error: unexpected ',' in: > "for(i in length(1:(2*nrow(X)))){ > Y$IID1new <- ifelse((as.character(Y[,2]) == as.characterXl[,i]) & > X$IID1new != '') ," >> } > Error: unexpected '}' in "}" >> for(i in length(1:(2*nrow(X)))){ > + Y$IID1new <- ifelse((as.character(Y[,2]) == as.characterXl[,i]) & > + X$IID1new != '') , as.character(as.matrix(X[,(2*nrow(X)+i)])),'') > Error: unexpected ',' in: > " Y$IID1new <- ifelse((as.character(Y[,2]) == as.characterXl[,i]) & > X$IID1new != '') ," >> } > > > Beside, this column X$IID1new != '' does not exist in X > > Here you clearly ask for nonexistent column, and why the heck you want to > select column by number of rows? > >> as.character(as.matrix(X[,(2*nrow(X)+1)])) > Error in `[.data.frame`(X, , (2 * nrow(X) + 1)) : > undefined columns selected > > So based on your toy data frames, what shall be the result after your > computation. > > Regards > Petr > > >> -----Original Message----- >> From: r-help-boun...@r-project.org [mailto:r-help-bounces@r- >> project.org] On Behalf Of Kate Ignatius >> Sent: Sunday, September 28, 2014 9:14 PM >> To: r-help >> Subject: [R] if else statement in loop >> >> I have two data frames >> >> For simplicity: >> >> X= >> >> V1 V2 V3 V4 V5 V6 >> samas4 samas5 samas6 samas4_father samas5_mother samas6_sibling >> samas4 samas5 samas6 samas4_father samas5_mother samas6_sibling >> samas4 samas5 samas6 samas4_father samas5_mother samas6_sibling >> >> Y= >> >> FID IID >> FAM01 samas4 >> FAM01 samas5 >> FAM01 samas6 >> >> I want to set to create a new IID in Y using V4 V5 V6 in X using an >> ifelse statement in a loop. I've used something like the following >> (after figuring out my factor problem): >> >> for(i in length(1:(2*nrow(X)))){ >> Y$IID1new <- ifelse((as.character(Y[,2]) == as.characterXl[,i]) & >> X$IID1new != '') , as.character(as.matrix(X[,(2*nrow(X)+i)])),'') >> } >> >> But of course this tends to overwrite. >> >> Is there an easy way to set up a loop to replace missing values? This >> didn't work either but not sure if its as easy as this: >> >> Y$IID1new <- ifelse((as.character(Y[,2]) == as.characterXl[,i]) & >> X$IID1new != '') , as.character(as.matrix(X[,(2*nrow(X)+i)])),'') >> >> for(i in length(2:(2*nrow(X)))){ >> ifelse((as.character(Y[,i]) == as.character(Xl[,i])), >> X[is.na(X$IID1new)] <- as.character(as.matrix(X[(2*nrow(X)+i)])),'') >> } >> >> Thanks! >> >> K. >> >> ______________________________________________ >> 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. > > ________________________________ > Tento e-mail a jakékoliv k němu připojené dokumenty jsou důvěrné a jsou > určeny pouze jeho adresátům. > Jestliže jste obdržel(a) tento e-mail omylem, informujte laskavě neprodleně > jeho odesílatele. Obsah tohoto emailu i s přílohami a jeho kopie vymažte ze > svého systému. > Nejste-li zamýšleným adresátem tohoto emailu, nejste oprávněni tento email > jakkoliv užívat, rozšiřovat, kopírovat či zveřejňovat. > Odesílatel e-mailu neodpovídá za eventuální škodu způsobenou modifikacemi či > zpožděním přenosu e-mailu. > > V případě, že je tento e-mail součástí obchodního jednání: > - vyhrazuje si odesílatel právo ukončit kdykoliv jednání o uzavření smlouvy, > a to z jakéhokoliv důvodu i bez uvedení důvodu. > - a obsahuje-li nabídku, je adresát oprávněn nabídku bezodkladně přijmout; > Odesílatel tohoto e-mailu (nabídky) vylučuje přijetí nabídky ze strany > příjemce s dodatkem či odchylkou. > - trvá odesílatel na tom, že příslušná smlouva je uzavřena teprve výslovným > dosažením shody na všech jejích náležitostech. > - odesílatel tohoto emailu informuje, že není oprávněn uzavírat za společnost > žádné smlouvy s výjimkou případů, kdy k tomu byl písemně zmocněn nebo písemně > pověřen a takové pověření nebo plná moc byly adresátovi tohoto emailu > případně osobě, kterou adresát zastupuje, předloženy nebo jejich existence je > adresátovi či osobě jím zastoupené známá. > > This e-mail and any documents attached to it may be confidential and are > intended only for its intended recipients. > If you received this e-mail by mistake, please immediately inform its sender. > Delete the contents of this e-mail with all attachments and its copies from > your system. > If you are not the intended recipient of this e-mail, you are not authorized > to use, disseminate, copy or disclose this e-mail in any manner. > The sender of this e-mail shall not be liable for any possible damage caused > by modifications of the e-mail or by delay with transfer of the email. > > In case that this e-mail forms part of business dealings: > - the sender reserves the right to end negotiations about entering into a > contract in any time, for any reason, and without stating any reasoning. > - if the e-mail contains an offer, the recipient is entitled to immediately > accept such offer; The sender of this e-mail (offer) excludes any acceptance > of the offer on the part of the recipient containing any amendment or > variation. > - the sender insists on that the respective contract is concluded only upon > an express mutual agreement on all its aspects. > - the sender of this e-mail informs that he/she is not authorized to enter > into any contracts on behalf of the company except for cases in which he/she > is expressly authorized to do so in writing, and such authorization or power > of attorney is submitted to the recipient or the person represented by the > recipient, or the existence of such authorization is known to the recipient > of the person represented by the recipient. ______________________________________________ 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.