Я написал функцию, которая выполняет анализ с data.frame. В начале функции я печатаю информацию о том, какие переменные берутся в функции. Поэтому я хочу распечатать информацию о используемом имени data.frame.R получить имя data.frame в функции
Но я не могу получить имя data.frame. Он не печатает имя data.frame, вместо этого печатает его содержимое, но не имя. Возможно ли напечатать имя data.frame, которое передается функции внутри функции.
tmpFuction <- function(DF){
print("#############")
print("tmpFuction starts")
print(paste("DF",DF,sep="="))
print("#############")
return(1)
}
df1 <- data_frame(id=seq(1:4),x=rep(0,4))
df2 <- data_frame(id=c(1,2),x=c(0,4))
tmpFuction(10)
tmpFuction("a")
tmpFuction(df1)
tmpFuction(df2)
Выход. В течение последних 2-х примеров, которые я хочу быть распечатаны:
[1] "#############"
[1] "tmpFuction starts"
[1] "DF=df1"
[1] "#############"
[1] "#############"
[1] "tmpFuction starts"
[1] "DF=df2"
[1] "#############"
[1] 1
>
Но я получаю:
> tmpFuction(10)
[1] "#############"
[1] "tmpFuction starts"
[1] "DF=10"
[1] "#############"
[1] 1
> tmpFuction("a")
[1] "#############"
[1] "tmpFuction starts"
[1] "DF=a"
[1] "#############"
[1] 1
> tmpFuction(df1)
[1] "#############"
[1] "tmpFuction starts"
[1] "DF=1:4" "DF=c(0, 0, 0, 0)"
[1] "#############"
[1] 1
> tmpFuction(df2)
[1] "#############"
[1] "tmpFuction starts"
[1] "DF=c(1, 2)" "DF=c(0, 4)"
[1] "#############"
[1] 1
>
deparse (заменяющие возвращает вам имя переменной, вы могли бы назвать его как это в вашей функции: 'DF <- data.frame (c (1,2)); print (paste ("DF", deparse (substitute (DF)), sep = "=")) ' –
Я также нашел решение, передавая не data.frame как функциональную переменную, а передавая имя data.frame как строку, а затем использовать функцию get. dfString <- data_frame (id = c (1,2), x = c (0,4)); df <- get ('dfString') – aeliv002
Должен также работать, однако в вашей попытке вы должны предоставить функцию get в среде, где определен ваш data.frame, иначе вы можете столкнуться с странным неправильным поведением в качестве другого кадра данных одно и то же имя может быть использовано. Поэтому мое предложение должно быть «более безопасным», если вы хотите, чтобы я представил его в качестве ответа? –