An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20121117/ae83609a/attachment.pl>
transform input argument (matrix) of function
4 messages · Omphalodes Verna, R. Michael Weylandt, Rui Barradas +1 more
I'm afraid I don't really understand what you're searching for, but note that your functions can be written without assignment/return: fun3 <- function(x) invisible(cbind(xy[,1], xy[,2], xy[,1] + xy[,2])) Cheers, Michael On Sat, Nov 17, 2012 at 3:41 PM, Omphalodes Verna
<omphalodes.verna at yahoo.com> wrote:
Dear list!
I would like to write a function to transform matrix, which is input argument of a written function. It is easy with new matrix (see below), but my idea is to transform input argument (matrix) of function without any additional matrixes. Here is an example:
fun1 <- function(xy) {
xy <- cbind(xy[,1], xy[,2], xy[,1] + xy[,2])
return(xy)
}
df1 <- matrix(c(1,2,3,1,2,3), ncol = 2)
fun1(df1)
fun2 <- function(xy) {
xy <- cbind(xy[,1], xy[,2], xy[,1] + xy[,2])
return(invisible(xy))
}
fun2(df1)
df1
should be
[,1] [,2] [,3]
[1,] 1 1 2
[2,] 2 2 4
[3,] 3 3 6
Thanks to all for help,
OV
[[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.
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20121117/da8ee1d4/attachment.pl>
On Nov 17, 2012, at 7:41 AM, Omphalodes Verna wrote:
Dear list!
I would like to write a function to transform matrix, which is input
argument of a written function. It is easy with new matrix (see
below), but my idea is to transform input argument (matrix) of
function without any additional matrixes. Here is an example:
fun1 <- function(xy) {
xy <- cbind(xy[,1], xy[,2], xy[,1] + xy[,2])
return(xy)
}
df1 <- matrix(c(1,2,3,1,2,3), ncol = 2)
fun1(df1)
fun2 <- function(xy) {
xy <- cbind(xy[,1], xy[,2], xy[,1] + xy[,2])
return(invisible(xy))
}
fun2(df1)
df1
should be
No, it should not be a three column matrix. When you call a function with an appropriate argument and fail fail to assign it to anything, the result evaporates. ?'<-' ?assign Functions generally do not modify objects "in place". If you wanted to have df1 be the result of fun2(df1) you would have needed to do this: df1 <- fun2(df1) There are ways to get around that limitation (described in each of those help pages), but I think it is better for one to learn ordinary functional programming conventions first.
[,1] [,2] [,3] [1,] 1 1 2 [2,] 2 2 4 [3,] 3 3 6 Thanks to all for help, OV [[alternative HTML version deleted]]
This persistent practice after multiple postings to Rhelp marks you as someone either having difficulty in reading the Posting Guide.
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
David Winsemius, MD Alameda, CA, USA