usar returns data como column applying r lapply substitution

returns - r apply function to each row



¿Depurar(sustituir(x)) en lapply? (1)

Una posible solución:

lapply(li, function(x) { call1 <- sys.call(1) call1[[1]] <- as.name("names") call1 <- call1[1:2] nm <- eval(call1) y <- deparse(substitute(x)) y <- gsub("//D", "", y) y <- as.numeric(y) list(myname=nm[y]) })

Me gustaría usar una función que use el deparse(substitute(x)) estándar de deparse(substitute(x)) dentro de lapply . Lamentablemente acabo de recuperar el argumento del bucle. Aquí está mi ejemplo reproducible completamente inútil:

# some test data a <- 5 b <- 6 li <- list(a1=a,b2=b) # my test function tf <- function(obj){ nm <- deparse(substitute(obj)) res <- list(myName=nm) res } tf(a) #returns $myName [1] "a"

lo cual está bien. Si uso lapply , obtengo [[1L]] o el argumento x de una función anónima.

lapply(li,function(x) tf(x)) # returns $a1 $a1$myName [1] "x" $b2 $b2$myName [1] "x"

¿Hay alguna manera de obtener lo siguiente?

$a1 $a1$myName [1] "a1" $b2 $b2$myName [1] "b1"

Si hay algo más general en deparse(substitute(x)) y lapply , también me gustaría saberlo.

EDITAR: El problema, en lugar de usar una función anónima que acepta múltiples argumentos y, por lo tanto, puede usar el nombre del objeto y el objeto en sí no funciona porque la función tf solo aceptará un argumento. Así que this no funciona aquí ...