[R] Referring to objects themselves
Gabor Grothendieck
ggrothendieck at gmail.com
Sun Mar 20 04:29:00 CET 2011
On Sat, Mar 19, 2011 at 9:45 PM, Russ Abbott <russ.abbott at gmail.com> wrote:
> Thanks for all the suggestions. I realize that this isn't the most important
> thing in the world -- and as a newcomer to R I gather it's not the way most
> people use R anyway.
>
> But I tried to do what looked like the simplest suggestion.
>
> open.account.2 <- function(total) {
> this <- environment()
> list(
> deposit = function(amount) {
> if(amount <= 0)
> stop("Deposits must be positive!\n")
> total <<- total + amount
> cat(amount, "deposited. Your balance is", this$balance(),
> "\n\n")
> },
> withdraw = function(amount) {
> if(amount > total)
> stop("You don't have that much money!\n")
> total <<- total - amount
> cat(amount, "withdrawn. Your balance is", this$balance(),
> "\n\n")
> },
> balance = function() {
> cat("Your balance is", this$total, "\n\n")
> }
> )
> }
>
> When I ran it, this is what happened.
>
>> x <- open.account.2(100)
>> x$balance()
>
> Your balance is 100
>
> OK so far. But
>
>> x$deposit(50)
> Error in cat(amount, "deposited. Your balance is", this$balance(), "\n\n")
> :
> attempt to apply non-function
>
>
> Am I doing this the wrong way?
>
> Thanks for your interest.
>
balance is a component of the list. Its not directly a component of
this. If you name the list you can refer to it as
this$methods$balance
open.account.2 <- function(total) {
this <- environment()
methods <- list(...whatever...)
}
--
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com
More information about the R-help
mailing list