我有一个rubridate, interval
并希望得到整数的天数.但是我得到以下奇怪的中间结果:
library("lubridate")
i1 <- interval("2015-01-01 00:00:00", "2016-01-01 00:00:00")
i1 <- interval(ymd_hms("2015-01-01 00:00:00"), ymd_hms("2016-01-01 00:00:00")) # Gives the same result
duration(i1)
# [1] "31536000s (~365 days)"
duration(i1, units = "days")
# [1] "2724710400000s (~86340.86 years)"
Run Code Online (Sandbox Code Playgroud)
这是两个有效的捷径.后者抛出一条消息"强迫间隔到持续时间"(我不知道原因......)
> as.numeric(as.duration(i1), units = "days")
[1] 365
> as.numeric(i1, units = 'days')
Run Code Online (Sandbox Code Playgroud)
(R版本3.3.0日期为2016-05-03,lubridate版本1.5.6.)
如果由于惰性评估而未知包,我如何在R中有效调试.我想保留基本browser()
功能,因为它工作得很好 - 即使是testthat package
.如以下文章中所述,--with-keep.source
在"项目选项=>构建工具"中为我的项目设置.
要重现该行为,请创建一个TestDebug
包含的包
myfun <- function(a,b) {return(a+b)}
Run Code Online (Sandbox Code Playgroud)
和一个脚本 example.R
{
browser()
TestDebug::myfun(1,2)
}
Run Code Online (Sandbox Code Playgroud)
编辑:还应涵盖TestDebug::myfun(1,2)
呼叫的情况otherpackage::myfun2(1,2)
.我认为情况应该发生在每个"真正"的包装中?
精简版。Iload()
数据在一个包中。以前,一个包中的测试通过了,现在它失败了,因为输出sort
改变了。这是一个最小的可重现示例 - 有关详细信息,请参见下文:
y <- c("Schaffhausen", "Schwyz", "Seespital", "SRZ")
sort(y)
# OLD 3.5.2 [1] "Schaffhausen" "Schwyz" "Seespital" "SRZ"
# NEW 4.0.0 [1] "SRZ" "Schaffhausen" "Schwyz" "Seespital"
# Update 4.0.2 see comment:
# [1] "Schaffhausen" "Schwyz" "Seespital" "SRZ"
# From jay.sf's comment
sort.int(y, method="radix")
# [1] "SRZ" "Schaffhausen" "Schwyz" "Seespital"
sort.int(y, method="shell")
# [1] "Schaffhausen" "Schwyz" "Seespital" "SRZ"
# From Henrik's comment:
data.table::fsort(y)
# [1] "SRZ" "Schaffhausen" "Schwyz" "Seespital"
Run Code Online (Sandbox Code Playgroud)
我发现的唯一相关报告变化是
R 4.0.0
新特性的变化
......
当通过 read.table() 加载数据集时,data() …
当我获取或拉入任何客户时,我一直面临问题。即“Tower”和Sourcetree。一切都很顺利,我刚刚将 macOS 更新到了 Mojave。
但我总是得到
错误详细信息:致命:“ https://username@bitbucket.org/sample/sample.git/ ”身份验证失败
我尝试将我的默认编码设置为UTF-8; 到目前为止没有成功:
a <- "Hallo"
b <- "äöfd"
print(Encoding(a))
# [1] "unknown"
print(Encoding(b))
# [1] "latin1"
options(encoding = "UTF-8")
a <- "Hallo"
b <- "äöfd"
print(Encoding(a))
# [1] "unknown"
print(Encoding(b))
# [1] "latin1"
old_locale <- Sys.getlocale()
Sys.setlocale(category = "LC_ALL", locale = "English_United States.1252")
a <- "Hallo"
b <- "äöfd"
print(Encoding(a))
# [1] "unknown"
print(Encoding(b))
# [1] "latin1"
Sys.getlocale()
# [1] "LC_COLLATE=German_Switzerland.1252;
# LC_CTYPE=German_Switzerland.1252;
# LC_MONETARY=German_Switzerland.1252;
# LC_NUMERIC=C;LC_TIME=German_Switzerland.1252"
Run Code Online (Sandbox Code Playgroud)
我发现以下链接R编码文件和如何使用Sys.setlocale(),但你可以看到它似乎他们不适用于我的情况,我不明白为什么.
我也试过Sys.setlocale(category = "LC_ALL", locale = "en_US.UTF-8")
但得到了 …
我使用 Git 已经一年多了,现在我必须向我们组中的其他人解释它。这就是为什么我需要更多的背景知识。\n去年我浏览了 Git 书籍的大部分内容,最近我继续阅读第 10 章。在第10.6章中章我完全陷入困境:
\n\n\n\n\n让\xe2\x80\x99s 遵循 simplegit 库的 http-fetch 过程:
\n\nRun Code Online (Sandbox Code Playgroud)\n\n$ git clone http://server/simplegit-progit.git\n
该命令所做的第一件事是下拉 info/refs 文件。\n 该文件是由 update-server-info 命令写入的,这就是为什么\n 您需要将其启用为接收后挂钩,以便HTTP\n 传输正常工作:
\n\nRun Code Online (Sandbox Code Playgroud)\n=> GET info/refs\nca82a6dff817ec66f44342007202690a93763949 refs/heads/master\n
我有一个小型测试仓库https://github.com/to_my/repo
并且git clone
运行良好。但
info/refs
?我只找到了/.git/info/exclude
之后clone
...update-server-info
命令?它是 git clone 的一部分吗?GET info/refs
在 git bash 工作中获取该命令。抱歉,如果问题很愚蠢,但我只是不明白如何将文档中的这些部分放在一起。
\n我想要一个曲面图,但我的网格不完整.我搜查了,但没有成功.我该如何进行以下工作:
x = c(10L, 20L, 30L, 40L, 50L, 60L, 70L, 80L, 90L, 100L, 30L, 40L,
50L, 60L, 70L, 80L, 90L, 100L, 50L, 60L, 70L, 80L, 90L, 100L,
70L, 80L, 90L, 100L, 90L, 100L)
y = c(10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 30L, 30L, 30L, 30L, 30L, 30L,
40L, 40L, 40L, 40L, 50L, 50L)
z = c(6.093955007, 44.329214443, 149.103755156, 351.517349974,
726.51174655, 1191.039562104, 1980.245204702, 2783.308022984,
6974.563519067, 5149.396230019, 142.236259009, 321.170609648,
684.959503897, …
Run Code Online (Sandbox Code Playgroud) (这个问题也是在Github上问这里)
将 R 升级到 4.0.2 后,测试似乎失败了,因为sort
in的算法发生了testthat
变化。以下内容显示,这base::sort()
和browser()
是R中4.0.2罚款(见这个问题,为什么增加这个检查。):
y <- c("Schaffhausen", "Schwyz", "Seespital", "SRZ")
print(sort(y))
# [1] "Schaffhausen" "Schwyz" "Seespital" "SRZ"
browser()
print(sort(y))
# [1] "Schaffhausen" "Schwyz" "Seespital" "SRZ"
Run Code Online (Sandbox Code Playgroud)
但是如果你创建一个包,调用它testsort
,使用添加测试环境usethis::use_testthat()
并在其中添加一个文件“test-sort.R”/testsort/tests/testthat/
test_that("test sort", {
xx <- c("Schaffhausen", "Schwyz", "Seespital", "SRZ")
print("")
# bowser()
print(sort(xx))
expect_equal(sort(xx), c("Schaffhausen", "Schwyz", "Seespital", "SRZ"))
})
Run Code Online (Sandbox Code Playgroud)
你得到
==> devtools::test()
Loading testsort
Testing testsort
v | OK F W S | Context
/ …
Run Code Online (Sandbox Code Playgroud) 我的R安装在中C:\R\R-3.3.0
。但:
> R.home()
[1] "C:/R/R-33~1.0"
> Sys.getenv("R_HOME")
[1] "C:/R/R-33~1.0"
Run Code Online (Sandbox Code Playgroud)
我认为两者都应该是"C:/R/R-3.3.0"
因为使用调试器时我遇到了很多麻烦:它只是找不到库!
在Windows上,我在文档中阅读了此内容,但没有帮助:
在Windows上,如果需要并且已启用Windows服务的R.home()和R_HOME的值,则将它们切换为路径元素的8.3短格式。R_HOME的值设置为使用正斜杠(因为许多软件包维护人员将其不加引号的形式传递给shell,例如在'Makefile's中)。
非常感谢您的帮助,因为我对环境变量的了解很少。
假设我有一个在 integer 上使用循环的函数i
。现在出了点问题,我假设错误发生在i=5
. 现在我可以逐步完成每一步(到目前为止我所做的)。
但现在我看了一下condition
和text
论证browser
和debug
:
text输入浏览器时可以检索的文本字符串。
条件 进入浏览器时可以检索的条件。
是否可以按照我想要的方式使用参数?
这是一个例子。调试器/浏览器应该只在i=5
到达后启动:
fun <- function(x, y, n) {
result <- 0
for (i in 1:n) {
# browser(condition = (i == 5)) # does not work
result <- result + i * ( x + y)
}
return(result)
}
x <- 2
y <- 3
n <- 10
# debug(fun, condition = (i == 5)) # does …
Run Code Online (Sandbox Code Playgroud)