我试图在Rstudio中调用timestamp
函数,但似乎是调用了我想要的版本以外的版本。 getAnywhere
表明有两个定义:
> getAnywhere(timestamp)
2 differing objects matching ‘timestamp’ were found
in the following places
package:utils
namespace:utils
Use [] to view one of them
> timestamp
function(...) .rs.callAs(name,
hook,
original,
...)
<environment: 0x0000000005f42030>
> timestamp()
##------ Thu Mar 06 15:08:51 2014 ------##
> utils::timestamp
function (stamp = date(), prefix = "##------ ", suffix = " ------##",
quiet = FALSE)
{
stamp <- paste0(prefix, stamp, suffix)
.External2(C_addhistory, stamp)
if (!quiet)
cat(stamp, sep = "\n")
invisible(stamp)
}
<bytecode: 0x0000000005f447a8>
<environment: namespace:utils>
调用utils::timestamp()
会导致RStudio崩溃。如果我只是打电话给timestamp
,它似乎忽略了这些参数。
> timestamp(prefix = "##-ddg-- ", quiet=TRUE)
这不会更改与timestamp
关联的前缀,并且会将输出返回到控制台,当quiet为true时,它不应该执行此操作。
这是运行R 3.0.1,RStudio 0.97.551,Windows 7 Enterprise Service Pack 1.
在我的Mac上,getAnywhere
的结果略有不同,timestamp
功能正常。
> getAnywhere(timestamp)
A single object matching ‘timestamp’ was found
It was found in the following places
package:utils
namespace:utils
with value
function (stamp = date(), prefix = "##------ ", suffix = " ------##",
quiet = FALSE)
{
stamp <- paste0(prefix, stamp, suffix)
.External2(C_addhistory, stamp)
if (!quiet)
cat(stamp, sep = "\n")
invisible(stamp)
}
<bytecode: 0x7fd90b10bdb8>
<environment: namespace:utils>
这个第二个定义来自Windows?如何让R拨打正确的版本?
感谢您的帮助。
巴巴拉
答案 0 :(得分:2)
在评论中Jonathan回答这个第二个定义来自Windows?和崩溃部分问题
在Windows上,RStudio将timestamp替换为自己的方法,因为默认方法具有在RStudio环境中无法满足的依赖关系(这是导致您在直接调用时看到的崩溃的原因)。它的方法是时间戳的替代,但不是包装器,替换不支持原始的所有参数。我鼓励您在RStudio支持论坛上报告问题。
您已在RStudio Support page上确认。它也在之前的RStudio support thread报告。
不幸的是,RStudio的bug数据库看起来是内部的,因此您需要按照commit history的latest version或发行说明进行监控,或者preview release。
答案 1 :(得分:0)
您的库中有两个名为timestamp
的函数,要选择一个函数,请使用方括号[]
按照建议选择所需的包。例如。 getAnywhere(timestamp())[1]
或getAnywhere(timestamp())[2]