Re: [R] Changing global variables from functions

2010-03-23 Thread jtouyz

Thanks for the help, I've fixed the problem.
-Josh Elliott
-- 
View this message in context: 
http://n4.nabble.com/Changing-global-variables-from-functions-tp1595002p1679330.html
Sent from the R help mailing list archive at Nabble.com.

__
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.


[R] Changing global variables from functions

2010-03-16 Thread jtouyz

Hey all,
I'm relatively new to the R-environment. I'm having a bit of trouble with
encapsulation.
I have a globally declared variable that doesn't update it when I change it
in a function. For example when I run the following function 

deckn-NULL
deck1-1  #52 card deck
deck-function()
{
#Creating a standard deck
deck1-c(1:52)
deckn-deck1
#Creating n decks
for (i in 2:num_decks)
{
deckn-c(deckn,52*i+deck1-1)
}
}
deckn
NULL

it returns NULL for deckn instead of a vector of values. Is there an easy
fix to update deckn in the function so that it outputs a vector of values (
I don't wish the function to return a value just update the current one)? 

Thanks in advance,
Josh Elliott
-- 
View this message in context: 
http://n4.nabble.com/Changing-global-variables-from-functions-tp1595002p1595002.html
Sent from the R help mailing list archive at Nabble.com.

__
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.


Re: [R] Changing global variables from functions

2010-03-16 Thread David Winsemius


On Mar 16, 2010, at 11:04 AM, jtouyz wrote:



Hey all,
I'm relatively new to the R-environment. I'm having a bit of trouble  
with

encapsulation.
I have a globally declared variable that doesn't update it when I  
change it

in a function.



For example when I run the following function


deckn-NULL
deck1-1  #52 card deck
deck-function()

{
#Creating a standard deck
deck1-c(1:52)
deckn-deck1
   #Creating n decks
   for (i in 2:num_decks)


# could be wrong but it appears that you are expecting the act of  
putting num_ in front of decks to be interpreted by R as returning  
the length of deckn or deck1. That is a higher level of abstraction  
than is yet available in any computer language with which I am  
familiar. Or perhaps you were intending to use Greg Snow's soon to be  
released mind-reading package so that R could know that you wanted it  
to be 6?.


Perhaps instead (depending on what the real problem (unstated as yet)  
might be:


  for (i in 2:length(deck1) )  # or some other object or function  
that returns a numeric value.



   {
   deckn-c(deckn,52*i+deck1-1)



   }
}

deckn


You would have needed to assign a return-ed value to deckn in the  
outer environment. The deckn object would have disappeared at the end  
of the function call, and it would not have needed to be named  
deckn, either.



Try instead:

deckn-NULL
deck-function(num_decks=6)
{
#Creating a standard deck
deck1-c(1:52)
deckn-deck1
   #Creating n decks
   for (i in 2:num_decks)
   {
   deckn-c(deckn,52*i+deck1-1)
   }; return(deckn)
}
deckn - deck()
deckn

Which has a gap between 52 and 104 because of your logic, not mine.



NULL


it returns NULL for deckn instead of a vector of values. Is there an  
easy
fix to update deckn in the function so that it outputs a vector of  
values (
I don't wish the function to return a value just update the current  
one)?


You could, of course, explain what you are trying to do.



Thanks in advance,
Josh Elliott
--


David Winsemius, MD
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.


Re: [R] Changing global variables from functions

2010-03-16 Thread jtouyz

Hi David,
Thank you for your response. 
Yes, num_decks was previously defined in my program, I apologize for the
confusion as it is an integral value.
This is only one portion of my program that is being used to simulate card
counting in blackjack.

The basic idea was to modify deckn without having to return a value from the
function deck(). That is whenever deck() was run it would write over
whatever was in deckn (instead of having to input deckn-deck().)
It seems from your response that this may not be possible and return is
always required.
If I have erred, please let me know.

Thanks once again,
Josh Elliott


David Winsemius wrote:
 
 
 On Mar 16, 2010, at 11:04 AM, jtouyz wrote:
 

 Hey all,
 I'm relatively new to the R-environment. I'm having a bit of trouble  
 with
 encapsulation.
 I have a globally declared variable that doesn't update it when I  
 change it
 in a function.
 
 For example when I run the following function

 deckn-NULL
 deck1-1  #52 card deck
 deck-function()
 {
 #Creating a standard deck
 deck1-c(1:52)
 deckn-deck1
#Creating n decks
for (i in 2:num_decks)
 
 # could be wrong but it appears that you are expecting the act of  
 putting num_ in front of decks to be interpreted by R as returning  
 the length of deckn or deck1. That is a higher level of abstraction  
 than is yet available in any computer language with which I am  
 familiar. Or perhaps you were intending to use Greg Snow's soon to be  
 released mind-reading package so that R could know that you wanted it  
 to be 6?.
 
 Perhaps instead (depending on what the real problem (unstated as yet)  
 might be:
 
for (i in 2:length(deck1) )  # or some other object or function  
 that returns a numeric value.
 
{
deckn-c(deckn,52*i+deck1-1)
 
}
 }
 deckn
 
 You would have needed to assign a return-ed value to deckn in the  
 outer environment. The deckn object would have disappeared at the end  
 of the function call, and it would not have needed to be named  
 deckn, either.
 
 
 Try instead:
 
 deckn-NULL
 deck-function(num_decks=6)
 {
 #Creating a standard deck
 deck1-c(1:52)
 deckn-deck1
 #Creating n decks
 for (i in 2:num_decks)
 {
 deckn-c(deckn,52*i+deck1-1)
 }; return(deckn)
 }
 deckn - deck()
 deckn
 
 Which has a gap between 52 and 104 because of your logic, not mine.
 
 
 NULL

 it returns NULL for deckn instead of a vector of values. Is there an  
 easy
 fix to update deckn in the function so that it outputs a vector of  
 values (
 I don't wish the function to return a value just update the current  
 one)?
 
 You could, of course, explain what you are trying to do.
 

 Thanks in advance,
 Josh Elliott
 -- 
 
 David Winsemius, MD
 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.
 
 

-- 
View this message in context: 
http://n4.nabble.com/Changing-global-variables-from-functions-tp1595002p1595356.html
Sent from the R help mailing list archive at Nabble.com.

__
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.


Re: [R] Changing global variables from functions

2010-03-16 Thread David Winsemius


On Mar 16, 2010, at 2:43 PM, jtouyz wrote:



Hi David,
Thank you for your response.
Yes, num_decks was previously defined in my program, I apologize for  
the

confusion as it is an integral value.
This is only one portion of my program that is being used to  
simulate card

counting in blackjack.

The basic idea was to modify deckn without having to return a value  
from the

function deck(). That is whenever deck() was run it would write over
whatever was in deckn (instead of having to input deckn-deck().)
It seems from your response that this may not be possible and  
return is

always required.
If I have erred, please let me know.


R is supposed to be used as a functional language. The use of the  
- operator is deprecated, so I did not mention that strategy. You  
could also have simply run the loop without the functional wrapper.


--
david.


Thanks once again,
Josh Elliott


David Winsemius wrote:



On Mar 16, 2010, at 11:04 AM, jtouyz wrote:



Hey all,
I'm relatively new to the R-environment. I'm having a bit of trouble
with
encapsulation.
I have a globally declared variable that doesn't update it when I
change it
in a function.



For example when I run the following function


deckn-NULL
deck1-1  #52 card deck
deck-function()

{
#Creating a standard deck
deck1-c(1:52)
deckn-deck1
  #Creating n decks
  for (i in 2:num_decks)


# could be wrong but it appears that you are expecting the act of
putting num_ in front of decks to be interpreted by R as  
returning

the length of deckn or deck1. That is a higher level of abstraction
than is yet available in any computer language with which I am
familiar. Or perhaps you were intending to use Greg Snow's soon to be
released mind-reading package so that R could know that you wanted it
to be 6?.

Perhaps instead (depending on what the real problem (unstated as yet)
might be:

  for (i in 2:length(deck1) )  # or some other object or function
that returns a numeric value.


  {
  deckn-c(deckn,52*i+deck1-1)



  }
}

deckn


You would have needed to assign a return-ed value to deckn in the
outer environment. The deckn object would have disappeared at the end
of the function call, and it would not have needed to be named
deckn, either.


Try instead:

deckn-NULL
deck-function(num_decks=6)
{
#Creating a standard deck
deck1-c(1:52)
deckn-deck1
   #Creating n decks
   for (i in 2:num_decks)
   {
   deckn-c(deckn,52*i+deck1-1)
   }; return(deckn)
}
deckn - deck()
deckn

Which has a gap between 52 and 104 because of your logic, not mine.



NULL


it returns NULL for deckn instead of a vector of values. Is there an
easy
fix to update deckn in the function so that it outputs a vector of
values (
I don't wish the function to return a value just update the current
one)?


You could, of course, explain what you are trying to do.



Thanks in advance,
Josh Elliott
--


David Winsemius, MD
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.




--
View this message in context: 
http://n4.nabble.com/Changing-global-variables-from-functions-tp1595002p1595356.html
Sent from the R help mailing list archive at Nabble.com.

__
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.


David Winsemius, MD
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.


Re: [R] Changing global variables from functions

2010-03-16 Thread David Winsemius


On Mar 16, 2010, at 3:11 PM, David Winsemius wrote:



On Mar 16, 2010, at 2:43 PM, jtouyz wrote:



Hi David,
Thank you for your response.
Yes, num_decks was previously defined in my program, I apologize  
for the

confusion as it is an integral value.
This is only one portion of my program that is being used to  
simulate card

counting in blackjack.

The basic idea was to modify deckn without having to return a value  
from the

function deck(). That is whenever deck() was run it would write over
whatever was in deckn (instead of having to input deckn-deck().)
It seems from your response that this may not be possible and  
return is

always required.
If I have erred, please let me know.


R is supposed to be used as a functional language. The use of the  
- operator is deprecated, so I did not mention that strategy.  
You could also have simply run the loop without the functional  
wrapper.



I wondered if a sampling without replacement strategy might work to  
provide with indexing:


num_deck # what fills shoes these days.
( table((1:52)[sample(1:(52*num_decks), 52*num_decks) %% 52])

 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23  
24 25 26 27 28 29 30
 6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6   
6  6  6  6  6  6  6

31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
 6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6
--
David.



--
david.


Thanks once again,
Josh Elliott


David Winsemius wrote:



On Mar 16, 2010, at 11:04 AM, jtouyz wrote:



Hey all,
I'm relatively new to the R-environment. I'm having a bit of  
trouble

with
encapsulation.
I have a globally declared variable that doesn't update it when I
change it
in a function.



For example when I run the following function


deckn-NULL
deck1-1  #52 card deck
deck-function()

{
#Creating a standard deck
deck1-c(1:52)
deckn-deck1
 #Creating n decks
 for (i in 2:num_decks)


# could be wrong but it appears that you are expecting the act of
putting num_ in front of decks to be interpreted by R as  
returning

the length of deckn or deck1. That is a higher level of abstraction
than is yet available in any computer language with which I am
familiar. Or perhaps you were intending to use Greg Snow's soon to  
be
released mind-reading package so that R could know that you wanted  
it

to be 6?.

Perhaps instead (depending on what the real problem (unstated as  
yet)

might be:

 for (i in 2:length(deck1) )  # or some other object or function
that returns a numeric value.


 {
 deckn-c(deckn,52*i+deck1-1)



 }
}

deckn


You would have needed to assign a return-ed value to deckn in the
outer environment. The deckn object would have disappeared at the  
end

of the function call, and it would not have needed to be named
deckn, either.


Try instead:

deckn-NULL
deck-function(num_decks=6)
{
#Creating a standard deck
deck1-c(1:52)
deckn-deck1
  #Creating n decks
  for (i in 2:num_decks)
  {
  deckn-c(deckn,52*i+deck1-1)
  }; return(deckn)
}
deckn - deck()
deckn

Which has a gap between 52 and 104 because of your logic, not mine.



NULL


it returns NULL for deckn instead of a vector of values. Is there  
an

easy
fix to update deckn in the function so that it outputs a vector of
values (
I don't wish the function to return a value just update the current
one)?


You could, of course, explain what you are trying to do.



Thanks in advance,
Josh Elliott
--


David Winsemius, MD
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.




--
View this message in context: 
http://n4.nabble.com/Changing-global-variables-from-functions-tp1595002p1595356.html
Sent from the R help mailing list archive at Nabble.com.

__
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.


David Winsemius, MD
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.


David Winsemius, MD
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.