当我几百时,我如何才能找到如何首先声明某个变量? 从我第一次宣布它的地方开始。例如,我已声明如下:
a <- c(vectorA,vectorB,vectorC)
现在我想知道我是如何宣布它的。我怎样才能做到这一点? 谢谢。
答案 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)”,它将是一个表达式,它产生三个向量的组合结果。