Как получить предыдущее имя набора данных в R?

#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. Переменные не ведут учет того, из каких переменных они были назначены. Вам нужно переосмыслить, зачем вам это нужно…