Я хотел бы использовать функцию, использующую стандартный трюк deparse(substitute(x))
в lapply
. К сожалению, я просто возвращаю аргумент цикла. Вот мой совершенно бесполезный воспроизводимый пример:
# 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"
что хорошо. Если я использую lapply
, я либо получаю [[1L]]
, либо аргумент x
анонимной функции.
lapply(li,function(x) tf(x))
# returns
$a1
$a1$myName
[1] "x"
$b2
$b2$myName
[1] "x"
Есть ли способ получить следующее?
$a1
$a1$myName
[1] "a1"
$b2
$b2$myName
[1] "b1"
Если что-то более общее на deparse(substitute(x))
и lapply
, я бы тоже хотел узнать.
EDIT:
Проблема в отличие от использования анонимной функции, которая принимает несколько аргументов и поэтому может использовать имя объекта и самого объекта, не работает, потому что функция tf
принимает только один аргумент. Поэтому этот здесь не работает...