获取R中的对象名称为字符串

时间:2017-05-31 10:01:08

标签: r

我想在R中绘制一些对象,并将它们保存到我的指南中。要指定每个图形的名称,我需要能够获得要绘制的对象的名称(作为字符串?)。

一个例子是:

setwd("C:/.../mydirectory/")
myname <- myobjectname(myobject) **I want to obtain the string of "myobject"**
png(paste(myname, ".png", sep=""))
myGraphingFunction(myobject)
dev.off()

我试过了:

myobjectname <- function(v1){
  deparse(substitute(v1))
}

我想做什么并返回我想要的字符串。然而,当在循环中或在上面的图形情况下使用它时它不起作用。

我有一个带有“月”参数的函数,它将由“1月”或“2月”等代替。使用该功能时:

myobjectname <- function(month) 

在循环中,尽管变量现在是 1月(或其他),但我得到的字符串总是“月”。

汇总:

> deparse(substitute(january))
[1] "january"

> month <- january
> deparse(substitute(month))
[1] "month"

有关第二种情况如何回馈“一月”的任何提示?

由于

2 个答案:

答案 0 :(得分:2)

我希望我理解正确:

myfun <- function(month) {
  deparse(match.call()$month)
}

january <- 1

myfun(january)
#[1] "january"

关于你的“总结”例子:这是不可能的。

我怀疑你的问题缺乏代表性的例子。你已经减少了太多。

答案 1 :(得分:0)

month <- "january"中,您已使用名称'month'“填充”变量,其值为'january'。如果您deparse(substitute())该变量,则获得该变量的名称,即“月份”。如果你想把这个值作为字符串,只需打印变量,就像他们的评论中建议的@docendodiscimus一样,它将返回已经是字符串的值!

> month <- "january"
> class(month)
[1] "character"
> month
[1] "january"

注意:

您的代码month <- january(不带引号)没有意义,除非'january'是变量:

> month <- january
Error: object 'january' not found

但:

> january <- "whatever"
> month <- january
> month
[1] "whatever"