On Apr 26, 2009, at 12:28 AM, Esmail wrote:
Hello all,
I have the following function call to create a matrix of POP_SIZE rows
and fill it with bit strings of size LEN:
pop=create_pop_2(POP_SIZE, LEN)
Are you construction a vector or a matrix? What are the dimensions of
your matrix?
I have 3 questions:
(1) If I did
keep_pop[1:POP_SIZE] == pop[1:POP_SIZE]
to keep a copy of the original data structure before manipulating
'pop' potentially, would this make a deep copy or just shallow? Ie
if I change something in 'pop' would it be reflected in 'keep_pop'
too? (I don't think so, but just wanted to check). I would like
two independent copies.
"==" is not an assignment operator in R, so the answer is that it
would do neither.
"<-" and "=" can do assignment. In neither case would it be a "deep
copy".
(2) If I wanted to change the order of *rows* in my matrix 'pop', is
there
an easy way to shuffle these? I don't want to change anything in
the
columns, just the complete rowsn (E.g., in Python I could just say
something like suffle(pop) assuming pop is a list of list) - is
there
an equivalent for R?
You can get a value from a matrix by using the indexing construction.
But your
terminology is confusing. Is pop a matrix or a list?
?"["
?order
... and perhaps ?sample if you wanted a random permutation of the rows.
I am going to refrain from posting speculation until you provide valid
R code
that will create an object that can be the subject of operations.
(3) I would like to compare the contents of 'keep_pop' with 'pop'.
Though
the order of rows may be different it should not matter as long as
the same rows are present. Again, in Python this would be simply
if sorted(keep_pop) == sorted(pop):
print 'they are equal'
else
print 'they are not equal'
Is there an equivalent R code segment?
Depends on what you want to do and what you are doing it on. You could
look at:
?%in%
?merge
Thanks,
Esmail
--------------- the code called above -------------
The code below creates a "bit vector" but then only makes exact
multiples of it
in the first row and zeros in the second row. Was that what was desired?
####################################################
# create a binary vector of size "len"
#
create_bin_Chromosome <- function(len)
{
sample(0:1, len, replace=T)
}
############## create_population ###################
# create population of chromosomes of length len
# the matrix contains twice as much space as popsize
#
create_pop_2 <- function(popsize, len)
{
datasize=len*popsize
print(datasize)
npop <- matrix(0, popsize*2, len, byrow=T)
for(i in 1:popsize)
npop[i,] = create_bin_Chromosome(len)
npop
}
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
______________________________________________
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.