2011-09-08 45 views
1

我怎样才能找到我是如何首次声明某个变量的,当我从我第一次声明它的地方开始几百行时,例如,我已经声明如下:正在检索变量声明

a <- c(vectorA,vectorB,vectorC) 

现在我想看看我是如何声明它的。我怎样才能做到这一点? 谢谢。

+0

我不知道我理解你的问题。如果通过声明,你的意思是“这是什么”。也许你正在寻找像'?str'这样的东西...... str(a) –

+0

我想检索“a <-c(vectorA,vectorB,vectorC)” - 如果可能的话,我首先声明它的方式。 – Dombey

回答

8

你可以尝试使用history命令:

history(pattern = "a <-") 

,试图找到你的历史,你分配一些东西到变量a线。不过,我认为这完全符合,所以你可能不得不留意空间。

事实上,如果你在命令行中键入history,它似乎并没有做任何事情比保存当前历史的临时文件,在使用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] 
} 
+0

+1我使用vi风格的CLI,但这对于很多用户来说非常方便。 –

+0

整洁。太糟糕了,它不接受正则表达式,但。=/ – aL3xa

+0

@ aL3xa看到我的更新;我认为它应该,除其他外! – joran

2

我会假设你正在使用默认的R控制台。如果您使用的是Windows,则可以使用文件 - >保存历史记录并在收藏夹文本浏览器中打开该文件,也可以使用功能savehistory()(请参见help(savehistory))。

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

+0

我应该说我在Ubuntu上使用R。 – Dombey

1

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

如需进一步信息,请参考手册ESS:http://ess.r-project.org/Manual/ess.html

0

当你定义一个函数,R存储在名为“源”的属性的功能(保留格式和注释)的源代码。当你输入功能的名称时,你会得到这个内容打印。

但它没有用变量做到这一点。您可以对一个变量进行解压缩,该变量会生成一个将生成该变量值的表达式,但这不需要是原始表达式。例如,当您有b <- c(17, 5, 21)时,deparse(b)将产生字符串"c(17, 5, 21)"。然而,在你的例子中,结果不会是“c(vectorA,vectorB,vectorC)”,它会是一个表达式,它产生你的三个向量的组合结果。