[R-es] Trabajar con un argumento opcional como escalar o vector.

Emilio Torres Manzanera torres en uniovi.es
Mar Abr 30 20:36:59 CEST 2013


Sí
On Tuesday, April 30 2013, 19:44:58, Carlos J. Gil Bellosta <cgb en datanalytics.com> wrote:

> ¿El vector de argumentos es igual de largo que la tabla?
>
> Un saludo,
>
> Carlos J. Gil Bellosta
> http://www.datanalytics.com
>
> El día 30 de abril de 2013 19:13, Emilio Torres Manzanera
> <torres en uniovi.es> escribió:
>>
>> Estimada Lista,
>>
>> Deseo aplicar una función a cada fila de un data frame con un argumento opcional.
>> En la función orginal, el argumento opcional debería poder ser escalar o vector.
>>
>> Necesito definir una función 'aplicaratodasfilas' que llama a otra función 'atomica' que no admite vectores y que requiere también argumentos opcionales.
>> Pongo un ejemplo:
>>
>>
>> # Se aplica a cada fila.
>> atomica <- function(xbegin, xend, npoints = 5, ...) { # los argumentos opcionales ... son necesarios ya que hay más funciones dentro
>>   seq(xbegin,xend,length.out = npoints) # la función seq no admite vectores
>> }
>>
>>
>> aplicaratodaslasfilas <- function(data, ...) {
>>   lapply(1:dim(data)[1], function(i,...) {
>>     atomica(xbegin=data[i,1], xend=data[i,2], ...)
>>   }, ... = ...
>>          )
>> }
>>
>> data <- data.frame(xbegin=c(1:2),xend=c(11:12))
>> aplicaratodaslasfilas(data=data) # FUNCIONA
>> ## [[1]]
>> ## [1]  1.0  3.5  6.0  8.5 11.0
>>
>> ## [[2]]
>> ## [1]  2.0  4.5  7.0  9.5 12.0
>>
>> aplicaratodaslasfilas(data=data, npoints = 3) # FUNCIONA
>> ## [[1]]
>> ## [1]  1  6 11
>>
>> ## [[2]]
>> ## [1]  2  7 12
>>
>> aplicaratodaslasfilas(data=data, npoints = c(3,5)) # NO FUNCIONA
>> # Me gustaría obtener
>> ## [[1]]
>> ## [1]  1  6 11
>>
>> ## [[2]]
>> ## [1]  2.0  4.5  7.0  9.5 12.0
>>
>> ¿Alguien sabría definir la función aplicaracadafila de tal forma que funcione en estos casos?
>> aplicaratodaslasfilas(data=data)
>> aplicaratodaslasfilas(data=data, npoints = 3)
>> aplicaratodaslasfilas(data=data, npoints = c(3,5))
>>
>> Gracias
>> Emilio
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es


-- 
=================================================
Emilio Torres Manzanera
Fac. de Comercio - Universidad de Oviedo
c/ Luis Moya 261, E-33203 Gijón (Spain)
Tel. 985 182 197 email: torres en uniovi.es



Más información sobre la lista de distribución R-help-es