R似乎记住了历史上的所有命令,包括重复的,这真的很烦人。如何改变这种行为?
例如,如果我运行这些命令
y = 3
x = rnorm(15)
x = rnorm(15)
我必须按三下键才能到达第一个命令。
R似乎记住了历史上的所有命令,包括重复的,这真的很烦人。如何改变这种行为?
例如,如果我运行这些命令
y = 3
x = rnorm(15)
x = rnorm(15)
我必须按三下键才能到达第一个命令。
如果您要过滤掉重复项而不考虑顺序,那么最简单的方法就是将pattern
参数添加到history()
, 例如history(pattern="")
. 由于实现的特殊性history
,即使有pattern=""
也会有过滤掉重复项的效果:
> history
...
if (!missing(pattern))
rawhist <- unique(grep(pattern, rawhist, value = TRUE,
...))
...
如果您确实关心订单,则只需修改库存history
功能,例如:
history_new = function(max.show = 25, reverse = FALSE, filter = FALSE, pattern, ...)
{
file1 <- tempfile("Rrawhist")
savehistory(file1)
rawhist <- readLines(file1)
unlink(file1)
# the modification to stock
if (filter)
rawhist <- rawhist[cumsum(rle(rawhist)$lengths)]
# end of modification
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)
}
假设重复命令是与前一个命令相同的调用,无论顺序如何,您都可以简单地执行以下操作:
tmp <- tempfile()
savehistory(tmp)
hist <- readLines(tmp)
hist[! duplicated(hist)]
或者这个,保留命令的最后一个实例
hist[! duplicated(hist, fromLast=TRUE)]