[R] modifying arrays within functions
Bill.Venables at csiro.au
Bill.Venables at csiro.au
Wed Feb 6 00:26:53 CET 2008
I can feel a sermon coming on...
I'd like to emphasize Martin's warning below and encourage you to avoid
this kind of construction. The problem is side effects. Some R
functions do this (e.g. fix) but everyone understands why. The real
problem, in my view, is deeper. The question you ask originally implies
that you don't really want a function, you want a macro. R does not
work comfortably with macros, it works with functions.
This in turn suggests to me you are trying to make R work like some
other software environment, presumably one with which you are familiar.
This is very understanble, but nearly always a bad thing. If you are
new to R, as you say, I would encourage you to find out how R works and
work with it, rather than try to may R work the way you would like it to
do. You will always be fighting the system unless you do.
Here endeth the sermon.
Bill Venables.
-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
On Behalf Of Martin Elff
Sent: Wednesday, 6 February 2008 2:23 AM
To: r-help at r-project.org
Subject: Re: [R] modifying arrays within functions
On Tuesday 05 February 2008 (16:51:41), Konrad BLOCHER wrote:
> Hi,
>
> I'm pretty new to R and seem to be having difficulties with writing a
> function that would change an array and keep the change after the
function
> finishes its work.
>
It seems you want this:
X<-array(1,dim=c(2,2))
addition<-function(a){
X[1,1] <<- X[1,1]+a # not '='
}
addition(1)
X
[,1] [,2]
[1,] 2 1
[2,] 1 1
Nevertheless I would advise against writing and using functions that
have side effects outside their scope.
It is in general dangerous.
Best,
Martin
______________________________________________
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.
More information about the R-help
mailing list