You should keep external data input away from this code construct to
avoid intentional or unintentional misuse of your fun.
If your toy example were your actual usage I would suggest the collapse argument of paste.
---------------------------------------------------------------------------
Jeff Newmiller The ..... ..... Go Live...
DCN:<jdnewmil at dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go...
Live: OO#.. Dead: OO#.. Playing
Research Engineer (Solar/Batteries O.O#. #.O#. with
/Software/Embedded Controllers) .OO#. .OO#. rocks...1k
---------------------------------------------------------------------------
Sent from my phone. Please excuse my brevity.
On January 15, 2015 6:25:43 AM PST, Rainer M Krug <Rainer at krugs.de> wrote:
Hi
Following scenario: I have a function fun
--8<---------------cut here---------------start------------->8---
fun <- function(A, B, C, ...){paste(A, B, C, ...)}
--8<---------------cut here---------------end--------------->8---
and x defined as follow
--8<---------------cut here---------------start------------->8---
x <- 1:5
names(x) <- LETTERS[x]
--8<---------------cut here---------------end--------------->8---
now I want to pass the *elements* of x to fun as named arguments, i.e.
,----
| > fun(A=1, B=2, C=3, D=4, E=5)
| [1] "1 2 3 4 5"
`----
The below examples obviously do not work:
,----
| > fun(x)
| Error in paste(A, B, C, list(...)) :
| argument "B" is missing, with no default
| > fun(unlist(x))
| Error in paste(A, B, C, list(...)) :
| argument "B" is missing, with no default
`----
How can I extract from x the elements and pass them on to fun()?
I could easily change x to a list() if this would be easier.
--8<---------------cut here---------------start------------->8---
x <- list(A=1, B=2, C=3, D=4, E=5)
--8<---------------cut here---------------end--------------->8---
In my actual program, x can have different elements as well as fun -
this is decided programmatically.
Any suggestions how I can achieve this?
Thanks,
Rainer