Tuesday, 13 July 2010
Calling Python from R
The new R package, rJython, permits calling Python from R. It is not on CRAN yet, but it will be soon. Details about the package (installation from r-forge, architectural details, etc.) can be found here.
Sunday, 4 July 2010
Passing arguments to Python functions
I found a good reference on how to pass arguments to Python functions using the star (or star-star) notation. You can find it here. Here goes a summary.
If you want to pass unnamed arguments, you can do as follows:
>>> a = (1,5)
>>> range( *a )
[1, 2, 3, 4]
If you want to pass named arguments, you need dictionaries:
>>> a = range( 1, 4 )
>>> b = range( 4, 8 )
>>> def concat( a, b ): return a + b
...
>>> concat( **dict( a = a, b = b ) )
[1, 2, 3, 4, 5, 6, 7]
You can mix named and unnamed arguments thus:
my_foo( *a, **b )
where a and b are a list and a dictionary. Caution needs to be taken to pass a single unnamed argument, though. Details can be found in the reference above.
If you want to pass unnamed arguments, you can do as follows:
>>> a = (1,5)
>>> range( *a )
[1, 2, 3, 4]
If you want to pass named arguments, you need dictionaries:
>>> a = range( 1, 4 )
>>> b = range( 4, 8 )
>>> def concat( a, b ): return a + b
...
>>> concat( **dict( a = a, b = b ) )
[1, 2, 3, 4, 5, 6, 7]
You can mix named and unnamed arguments thus:
my_foo( *a, **b )
where a and b are a list and a dictionary. Caution needs to be taken to pass a single unnamed argument, though. Details can be found in the reference above.
Passing arguments to Python functions
I found a good discussion on how to pass vectors and dictionaries as arguments to Python functions. It can be found here.
In summary, for unnamed arguments:
>>> a = (1,4)
>>> range( *a )
[1, 2, 3]
And for named arguments:
>>> def concat(a,b): return a + b
...
>>> a = [1,2,3]
>>> b = range( 4,7)
>>> b
[4, 5, 6]
>>> concat(**dict( a = a, b = b ) )
[1, 2, 3, 4, 5, 6]
Named and unnamed arguments can be mixed:
my_foo( *a, **b )
There is only one caveat with functions requiring a single, unnamed argument. See the link above for details.
Subscribe to:
Posts (Atom)