#r
#r
Вопрос:
Предположим, я назначаю data=Abortion
(набор данных прерывания, указанный в ltm
пакете). У меня есть некоторая функция, в которой одним из входных данных являются данные.
При использовании функции я буду писать.
function.name(data=Abortion)
Для записи сводки результатов мне нужно имя набора данных, который я использовал; вот в данном случае это Abortion
.
Как я могу вернуть это имя обратно?
В более общем смысле. предположим, у меня есть некоторый объект, который имеет некоторое имя abc
. Я назначаю xyz=abc
и теперь, как я могу вернуть имя abc
?
Комментарии:
1. Может быть, что-то вроде
dname <- deparse(substitute(data))
вашей функции.2. Пожалуйста, поясните, зачем вам это нужно? Возможно, вам следует пересмотреть свой подход…
3. @Pascal
dname <- deparse(substitute(data))
просто вернет имя данных в виде строки"data"
, это не то, что нужно OP.4. Решение от @Pascal должно работать для вашего конкретного случая. Общего решения этой проблемы не существует, поскольку объекты обычно не сохраняют историю имен переменных, которым они были присвоены.
5. @Pascal, ваше предложение не работает.
Ответ №1:
Я предлагаю пересмотреть ваш подход. Я предполагаю, что вы пытаетесь перебирать разные наборы данных и получать результаты. Попробуйте следующий пример:
#dummy data
dat1 <- runif(10)
dat2 <- runif(10)
dat3 <- runif(10)
#my function
myfunc <- function(data) max(data)
#make a list - creating list of data manually, this is done automatically,e.g.:
# lapply(list.files(),read.table)
all_dat <- list(dat1,dat2,dat3)
#add names to list
names(all_dat) <- c("dat1","dat2","dat3")
#loop through dat1,2,3
sapply(all_dat,myfunc)
Комментарии:
1. позвольте мне сформулировать этот вопрос таким образом. предположим, что dat1=runif(10) и data=dat1 не нужны каждый день, но мне приходится постоянно менять dat1 каждый раз, когда я меняю данные. myfunc = function(data){ код, который использует данные в качестве входной переменной maytimes} для отображения сводки результата я использую команду «вставить», например, paste («используемые данные:» , var) теперь этот var должен каким-то образом выдать мне «dat1».
2. Использовать внешнюю функцию вставки?
res <- paste(deparse(substitute(dat1)),myfunc(data=dat1))
3. это заставляет нас записывать это имя данных («dat1») более одного раза. Разве мы не можем сделать что-то вроде, как только мы назначим data=dat1 изначально, перед входом в функцию. тогда нам не нужно вспоминать, какое имя мы использовали изначально.
4. Переменные не ведут учет того, из каких переменных они были назначены. Вам нужно переосмыслить, зачем вам это нужно…