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.

Reply via email to