[R] Simple Function doesn't work?
Colin Millar
C.Millar at MARLAB.AC.UK
Fri Nov 27 17:41:15 CET 2009
Hi,
You would also make your code more efficient and possible more readable
by doing
ReturnsGrid <-
function(x, y, m)
{
x + (seq.int(m) - 1) * (y - x) / m
}
(xx <- ReturnsGrid(0, 9, 3))
#[1] 0 3 6
And if you want to supply vector x and y you could do something like
(there are probably better ways..)
ReturnsGrid <-
function(x, y, m)
{
if (length(x) != length(y) & (length(x)==1 | length(y) == 1)) stop
("inputs not compatible") # or something
n <- max(length(x), length(y))
out <- sapply(seq.int(n), function(i) x[i] + (1:m - 1) * (y[i] - x[i])
/ m)
drop(out)
}
(xx <- ReturnsGrid(0, 9, 3))
#[1] 0 3 6
(xx <- ReturnsGrid(0:2, 9:11, 3))
#[1,] 0 1 2
#[2,] 3 4 5
#[3,] 6 7 8
But it seems like you could also do it using sequence ...
seq(x, y-1, by = m)
HTH,
Colin
-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
On Behalf Of Anastasia
Sent: 27 November 2009 16:01
To: r-help at r-project.org
Subject: [R] Simple Function doesn't work?
Hello,
I am new to R program, therefore, I am sorry if this is a really stupid
question.
I wrote a simple function and for some reason it doesn't work
ReturnsGrid = function(x,y,m){
for (i in 1:m){
grid[i] <- x + (i-1)*(y-x)/m
}
grid
}
xx=ReturnsGrid(0,9,3)
Thanks a lot!
[[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.
______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email
More information about the R-help
mailing list