Tengo una función f(var1, var2)en R. Supongamos que establecemos var2 = 1y ahora quiero aplicar la función f()a la lista L. Básicamente quiero obtener una nueva lista L * con las salidas
[f(L[1],1),f(L[2],1),...,f(L[n],1)]
¿Cómo puedo hacer esto con cualquiera apply, mapplyo lapply?

Respuestas:
Simplemente pase var2 como argumento adicional a una de las funciones de aplicación.
Esto pasa lo mismo
var2a cada llamada demyfxn. Si, por el contrario, desea que cada llamadamyfxnobtenga el 1 ° / 2 ° / 3 ° / etc. elemento de ambosmylistyvar2, entonces, estás enmapplyel dominio de.fuente
myfxnpuede estar vectorizado, en cuyo caso se debe usarmyfxn(unlist(mylist), var2=var2)sapply(mylist, function(var1, var2) { var1*var2 }, var=thisvar2)Pero me da un error de que el argumento 2 coincide con múltiples argumentos formalesvarlugar devar2. R no puede adivinar lo que quieres decir.Si su función tiene dos variables vectoriales y debe computarse a sí misma en cada valor de ellas (como lo menciona @Ari B. Friedman), puede usar
mapplylo siguiente:que te da:
fuente
mapplytambién se reciclará sivars1tiene un solo elemento. Por ejemplo cuandovars1 <- 3,mapply(mult_one, vars1, vars2)vuelve30 60 90. Esto es útil cuando desea usarlapplysobre el segundo argumento de una función.Para generalizar aún más el ejemplo de @ Alexander,
outeres relevante en los casos en que una función debe calcularse a sí misma en cada par de valores vectoriales:da:
fuente