[R] Best way to export values from a function?

Petr PIKAL petr.pikal at precheza.cz
Thu Jul 9 14:47:30 CEST 2009


Hi

Godmar Back <godmar at gmail.com> napsal dne 09.07.2009 14:09:42:

> On Thu, Jul 9, 2009 at 4:50 AM, Petr PIKAL <petr.pikal at precheza.cz> 
wrote:
> Hi
> 
> r-help-bounces at r-project.org napsal dne 09.07.2009 02:57:33:
> 

<snip>

> Not so weird. What do you expect from
> 
> c(1:5, 10:20, 30:50)
> 
> You mean what I expect personally, with my background?
> I'd expect a jagged array of arrays.
> 
> 1 2 3 4 5
> 10 11 12 .. 20
> 30 31 .. 50
> 
> If operator c() constructs an array out of its arguments, and if the 
sequence 
> operator : constructs an array, then c(1:5) should construct an array of 
arrays.

> is.array(1:5)
[1] FALSE
> is.vector(1:5)
[1] TRUE
>

Why. Not much is said about arrays in man page for c. The operator 
concatenates its arguments. If they are vectors the output is again a 
vector. If they are lists the output is list.

try
c(1:5,10:20)
c(1:5, list(10:20)
c(1:5, data.frame(10:20)

and regarding arrays, matrices and vectors - AFAIK arrays and matrices are 
just vectors with dim attribute, which is stripped by c 
 
c is sometimes used for its side effect of removing attributes except 
names, for example to turn an array into a vector. as.vector is a more 
intuitive way to do this, but also drops names. Note too that methods 
other than the default are not required to do this (and they will almost 
certainly preserve a class attribute). 

  
> 
> That is basically what your function do. With slight modification you 
can
> get tabular output without mapply
> 
> multipleoutput <- function (x) {
> result.s <- x^2
> result.c <- x^3
> result.e <- exp(x)
> cbind(square=result.s, cube=result.c, exp=result.e)
> }
> 
> Just for clarification: is there any significance to your using the . in 
the 
> names result.s, result.c, etc. like there would be in some other 
languages 
> where dot is an operator?

No. AFAIK one dot does not have any special meaning unless you use it in 
the beginning of name. In that case the variable is not listed by ls() 
function. See ?ls and argument all.names

Regards
Petr

>  
>  - Godmar




More information about the R-help mailing list