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í ...