小编Chr*_*oph的帖子

为什么365天等于80000年?

我有一个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 lubridate

22
推荐指数
2
解决办法
4298
查看次数

调试包:: function()虽然使用了延迟评估

如果由于惰性评估而未知包,我如何在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).我认为情况应该发生在每个"真正"的包装中?

r rstudio

10
推荐指数
1
解决办法
279
查看次数

从 3.5.2 升级到 4.0.0 后,为什么 R 的排序更改了使用 load() 导入的数据?

精简版。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() …

sorting r

10
推荐指数
1
解决办法
193
查看次数

如何解决 fatal: git 身份验证失败 [bitbucket]

当我获取或拉入任何客户时,我一直面临问题。即“Tower”和Sourcetree。一切都很顺利,我刚刚将 macOS 更新到了 Mojave。

但我总是得到

错误详细信息:致命:“ https://username@bitbucket.org/sample/sample.git/ ”身份验证失败

git bitbucket git-tower

9
推荐指数
2
解决办法
8万
查看次数

最佳实践:我应该尝试将UTF-8更改为区域设置还是保持原样安全?

我尝试将我的默认编码设置为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")但得到了 …

windows encoding r utf-8

6
推荐指数
1
解决办法
2741
查看次数

Git 的传输协议是如何工作的

我使用 Git 已经一年多了,现在我必须向我们组中的其他人解释它。这就是为什么我需要更多的背景知识。\n去年我浏览了 Git 书籍的大部分内容,最近我继续阅读第 10 章。在第10.6章中章我完全陷入困境:

\n\n
\n

让\xe2\x80\x99s 遵循 simplegit 库的 http-fetch 过程:

\n\n
$ git clone http://server/simplegit-progit.git\n
Run Code Online (Sandbox Code Playgroud)\n\n

该命令所做的第一件事是下拉 info/refs 文件。\n 该文件是由 update-server-info 命令写入的,这就是为什么\n 您需要将其启用为接收后挂钩,以便HTTP\n 传输正常工作:

\n\n
=> GET info/refs\nca82a6dff817ec66f44342007202690a93763949     refs/heads/master\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n

我有一个小型测试仓库https://github.com/to_my/repo并且git clone运行良好。但

\n\n
    \n
  • 文件夹在哪里info/refs?我只找到了/.git/info/exclude之后clone...
  • \n
  • 我应该如何使用该update-server-info命令?它是 git clone 的一部分吗?
  • \n
  • 我完全迷失了“...这就是为什么你需要将其启用为接收后挂钩”,尽管我了解挂钩(我认为)并使用预提交挂钩来自动增加包版本。
  • \n
  • 我无法GET info/refs在 git bash 工作中获取该命令。
  • \n
\n\n

抱歉,如果问题很愚蠢,但我只是不明白如何将文档中的这些部分放在一起。

\n

git

6
推荐指数
2
解决办法
3850
查看次数

具有非完整网格的Surfaceplot

我想要一个曲面图,但我的网格不完整.我搜查了,但没有成功.我该如何进行以下工作:

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)

3d plot r

6
推荐指数
1
解决办法
46
查看次数

为什么testthat 2.3.2使用了不同的sort()

(这个问题也是在Github上问这里

将 R 升级到 4.0.2 后,测试似乎失败了,因为sortin的算法发生了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 testthat

6
推荐指数
1
解决办法
198
查看次数

如何正确设置R.HOME()和/或R_HOME?

我的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中)。

非常感谢您的帮助,因为我对环境变量的了解很少。

windows r

5
推荐指数
1
解决办法
4622
查看次数

如何仅在满足条件时启动调试器

假设我有一个在 integer 上使用循环的函数i。现在出了点问题,我假设错误发生在i=5. 现在我可以逐步完成每一步(到目前为止我所做的)。

但现在我看了一下conditiontext论证browserdebug

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)

debugging r conditional-statements

5
推荐指数
2
解决办法
621
查看次数