检索变量声明

时间:2011-09-08 18:29:38

标签: r variables

当我几百时,我如何才能找到如何首先声明某个变量? 从我第一次宣布它的地方开始。例如,我已声明如下:

a <- c(vectorA,vectorB,vectorC) 

现在我想知道我是如何宣布它的。我怎样才能做到这一点? 谢谢。

4 个答案:

答案 0 :(得分:8)

您可以尝试使用history命令:

history(pattern = "a <-")

尝试在历史记录中找到您为变量a指定内容的行。我认为这完全匹配,所以你可能需要留意空间。

实际上,如果您在命令行中键入history,它似乎没有比在tempfile中保存当前历史记录更好,使用readLines将其重新加载然后再搜索它使用grep。修改该函数以包含更多功能应该相当简单...例如,此修改将使其返回匹配行,以便您可以将其存储在变量中:

myHistory <- function (max.show = 25, reverse = FALSE, pattern, ...) 
{
    file1 <- tempfile("Rrawhist")
    savehistory(file1)
    rawhist <- readLines(file1)
    unlink(file1)
    if (!missing(pattern)) 
        rawhist <- unique(grep(pattern, rawhist, value = TRUE, 
            ...))
    nlines <- length(rawhist)
    if (nlines) {
        inds <- max(1, nlines - max.show):nlines
        if (reverse) 
            inds <- rev(inds)
    }
    else inds <- integer()
    #file2 <- tempfile("hist")
    #writeLines(rawhist[inds], file2)
    #file.show(file2, title = "R History", delete.file = TRUE)
    rawhist[inds]
}

答案 1 :(得分:2)

我假设你正在使用默认的R控制台。如果您使用的是Windows,则可以使用File - &gt;保存历史记录并在您的文本浏览器中打开文件,或者您可以使用函数savehistory()(请参阅help(savehistory))。

你需要做的是获得一个(好的)IDE,或者至少是一个体面的文本编辑器。您将受益于代码折叠,语法着色等等。有很多选择,包括Tinn-R,VIM,ESS,Eclipse + StatET,RStudio或RevolutionR among others

答案 2 :(得分:1)

您可以从终端运行grep 'a<-' .Rhistory(假设您cd d到您的工作目录)。 ESS有几个非常有用的历史搜索功能,例如(comint-history-isearch-backward-regexp) - 默认绑定到M-r

有关详细信息,请参阅ESS手册:http://ess.r-project.org/Manual/ess.html

答案 3 :(得分:0)

定义函数时,R将函数的源代码(保留格式和注释)存储在名为“source”的属性中。键入函数名称时,将打印此内容。

但它不会对变量这样做。您可以对变量进行解压缩,该变量生成将生成变量值的表达式,但这不需要是原始表达式。例如,当您有b <- c(17, 5, 21)时,deparse(b)将生成字符串"c(17, 5, 21)"

然而,在你的例子中,结果不是“c(vectorA,vectorB,vectorC)”,它将是一个表达式,它产生三个向量的组合结果。