Hi all,
I want to construct relatedness among individuals and have a look at the
following script.
#########################
rm(list=ls())
N=5
id = c(1:N)
dad = c(0,0,0,3,3)
mom = c(0,0,2,1,1)
sex = c(2,2,1,2,2) # 1= M and 2=F
A=diag(nrow = N)
for(i in 1:N) {
for(j in i:N) {
ss = dad[j]
dd = mom[j]
sx = sex[j]
if( ss > 0 && dd > 0 )
{
if(i == j)
{ A[i,i] = 1 + 0.5*A[ss,dd] }
else
{ A[i,j] = A[i,ss] + 0.5*(A[i,dd])
A[j,i] = A[i,j] }
}
} #inner for loop
} # outer for loop
A
If the sex is male ( sex=1) then I want to set A[i,i]=0.5*A[ss,dd]
If it is female ( sex=2) then A[i,i] = 1 + 0.5*A[ss,dd]
How do I do it ?
I tried several cases but it did not work from me. Your assistance is
highly appreciated in advance
Thanks
[[alternative HTML version deleted]]
I hate to sound like David "Have You Read The Posting Guide?"
Winsemius, but there's no way for anyone to know what you are trying to
accomplish here without a lot more information. You don't show us the
output you expect and the output you got. I would expected
"relatedness" to be on a scale from 0 to 1, but it's clear that
you'll get values >1 in this program.
To use R effectively, you need to rephrase your computation as a matrix
computation. People generally use R at least partly to avoid debugging index
computations in for-loops. For-loops are also much slower than the
corresponding matrix operations in R. If you want to use for-loops, you can
always put in some prints and trace what's going on, just like the old days!
-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
On Behalf Of Val
Sent: Wednesday, February 16, 2011 3:14 PM
To: r-help at stat.math.ethz.ch
Subject: [R] covar
Hi all,
I want to construct relatedness among individuals and have a look at the
following script.
#########################
rm(list=ls())
N=5
id = c(1:N)
dad = c(0,0,0,3,3)
mom = c(0,0,2,1,1)
sex = c(2,2,1,2,2) # 1= M and 2=F
A=diag(nrow = N)
for(i in 1:N) {
for(j in i:N) {
ss = dad[j]
dd = mom[j]
sx = sex[j]
if( ss > 0 && dd > 0 )
{
if(i == j)
{ A[i,i] = 1 + 0.5*A[ss,dd] }
else
{ A[i,j] = A[i,ss] + 0.5*(A[i,dd])
A[j,i] = A[i,j] }
}
} #inner for loop
} # outer for loop
A
If the sex is male ( sex=1) then I want to set A[i,i]=0.5*A[ss,dd]
If it is female ( sex=2) then A[i,i] = 1 + 0.5*A[ss,dd]
How do I do it ?
I tried several cases but it did not work from me. Your assistance is
highly appreciated in advance
Thanks
[[alternative HTML version deleted]]
______________________________________________
R-help at 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.
message may contain confidential information. If you are not the designated
recipient, please notify the sender immediately, and delete the original and any
copies. Any use of the message by you is prohibited.
Relatedness if often defined in terms of the kinship matrix. It may be helpful to search for this. Several packages in R use this matrix including the kinship package. On Wed, Feb 16, 2011 at 3:14 PM, Val <valkremk at gmail.com> wrote:> Hi all, > > I want to construct relatedness among individuals and have a look at the > following script. > > ######################### > rm(list=ls()) > > N=5 > id ? = c(1:N) > dad = c(0,0,0,3,3) > mom ?= c(0,0,2,1,1) > sex ?= c(2,2,1,2,2) # 1= M and 2=F > > ? A=diag(nrow = N) > ? for(i in 1:N) ? ?{ > ? ? ?for(j in i:N) ? ? ?{ > ? ? ? ? ss = dad[j] > ? ? ? ? dd = mom[j] > ? ? ? ? sx = sex[j] > ? ? ? ? ?if( ss > 0 && dd > 0 ) > ? ? ? ? ? ?{ > ? ? ? ? ? ? ?if(i == j) > ? ? ? ? ? ? ? ? ? { A[i,i] = 1 + 0.5*A[ss,dd] } > ? ? ? ? ? ? ? ? else > ? ? ? ? ? ? ? ? ?{ A[i,j] = A[i,ss] + 0.5*(A[i,dd]) > ? ? ? ? ? ? ? ? ? ?A[j,i] = A[i,j] } > ? ? ? ? ? ?} > > ? ? ?} #inner for loop > ? ? } # outer for loop > ?A > > If the sex is male ( sex=1) ?then I want to set A[i,i]=0.5*A[ss,dd] > If it is female ( sex=2) then A[i,i] = 1 + 0.5*A[ss,dd] > > > How do I do it ? > > I tried several cases but it did not work from me. Your assistance is > highly ?appreciated ?in advance > > Thanks > > ? ? ? ?[[alternative HTML version deleted]] > > ______________________________________________ > R-help at 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. >