[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