小编Har*_*lan的帖子

如何让sbt使用本地maven代理存储库(Nexus)?

我有一个sbt(Scala)项目,目前从Web上提取工件.我们希望转向一个可以缓存工件的企业标准化Nexus存储库.从Nexus文档中,我了解如何为Maven项目执行此操作.但是sbt显然使用了不同的方法.(我知道Ivy会以某种方式参与其中,但我从未使用它,也不了解它是如何工作的.)

如何告诉sbt和/或底层Ivy将所有依赖项用于企业Nexus存储库系统?我想要使​​用某种项目级配置文件的答案,以便我们的源存储库的新克隆将自动使用代理.(即,在点目录中使用每个用户的配置文件捣乱是不可行的.)

谢谢!

scala nexus ivy maven sbt

72
推荐指数
5
解决办法
4万
查看次数

如何进行data.table合并操作

注意:这个问题和以下答案涉及data.table版本<1.5.3; v.1.5.3于2011年2月发布以解决此问题.查看更新的处理(03-2012):将外键上的SQL连接转换为R data.table语法


我一直在挖掘data.table包的文档(data.frame的替代品,对于某些操作来说效率更高),包括Josh Reich在纽约R Meetup(pdf)上关于SQL和data.table的演示,但是无法想象这完全琐碎的操作.

> x <- DT(a=1:3, b=2:4, key='a')
> x
     a b
[1,] 1 2
[2,] 2 3
[3,] 3 4
> y <- DT(a=1:3, c=c('a','b','c'), key='a')
> y
     a c
[1,] 1 a
[2,] 2 b
[3,] 3 c
> x[y]
     a b
[1,] 1 2
[2,] 2 3
[3,] 3 4
> merge(x,y)
  a b c
1 1 2 a
2 2 3 b …
Run Code Online (Sandbox Code Playgroud)

merge r data.table

49
推荐指数
3
解决办法
8万
查看次数

从参数设置Rmarkdown中的文档标题

我有一个运行良好的Rmarkdown模板,我已对其进行参数化,因此我可以从不同的数据源生成相同报告的变体.但是,我想在每种情况下更改报告的标题.我怎么做?

这是我到目前为止的YAML标题:

---
title: "My Title"
author: "Me, Inc."
date: "August 4, 2015"
output: pdf_document
params:
  title: default
---
Run Code Online (Sandbox Code Playgroud)

我已经尝试params=list(title="ASDF")在调用中使用rmarkdown::render,虽然我的代码可以看到该变量,但它并没有改变标题.我也试过r params$title在YAML中使用,但这会产生语法错误.

还有什么我应该尝试的吗?谢谢!

r pandoc r-markdown

35
推荐指数
2
解决办法
1万
查看次数

在R中的tryCatch'ed错误上获取堆栈跟踪

这与其他一些问题有关,但我似乎无法弄清楚如何应用答案,所以我问了一个新问题.

我试图从一段看起来像这样的代码中找出一个无法解释的错误:

tryCatch(MainLoop(), 
  error=function(e) { fatal(lgr, paste('caught fatal error:', as.character(e))); 
                      exit.status <<- 1 })
Run Code Online (Sandbox Code Playgroud)

问题是该错误似乎与库函数中隐藏的内容有关:

Error in nrow(x): (subscript) logical subscript too long
Run Code Online (Sandbox Code Playgroud)

nrow不在我的代码中,因为上面的C级错误仅适用于我的任何nrow调用中从未发生过的索引类型.

所以我真的想从内部得到一个堆栈跟踪tryCatch.这是一个类似的问题:

x <- function() { y(); }
y <- function() { z(); }
z <- function() { stop("asdf") }

> x()
Error in z() : asdf
> tryCatch(x(), error=function(e) { print(conditionCall(e)) } )
z()
> tryCatch(x(), error=function(e) { dump.frames() } )
> last.dump
$`tryCatch(x(), error = function(e) {
    dump.frames()
})` …
Run Code Online (Sandbox Code Playgroud)

error-handling r

18
推荐指数
1
解决办法
3094
查看次数

如何获得两个R命名列表之间的区别?

好的,我有两个命名列表,一个是"预期",一个是"观察".它们的结构可能很复杂,具有任意数据类型.我想获得一个新列表,其中仅包含观察列表中与预期列表中的元素不同的元素.这是一个例子:

Lexp <- list(a=1, b="two", c=list(3, "four"))
Lobs <- list(a=1, c=list(3, "four"), b="ni")
Lwant <- list(b="ni")
Run Code Online (Sandbox Code Playgroud)

Lwant是我想要的结果.我试过这个:

> setdiff(Lobs, Lexp)
[[1]]
[1] "ni"
Run Code Online (Sandbox Code Playgroud)

不,这个名字丢失了,我不认为setdiff会注意名字.订单明显无关紧要,我不希望a = 1b = 1匹配.

不确定什么是好的方法......在一系列名称(Lobs)上循环的东西?听起来很笨拙,不像R一样,虽然可行......有什么优雅的想法吗?

indexing r list set

13
推荐指数
1
解决办法
2万
查看次数

R中的执行效率与程序员效率

经典而精彩的Programming Perl参考书中有一个部分,其中作者提供了有关如何编写最高计算效率的 Perl 的建议列表,接下来是关于如何编写最高编程效率的 Perl的建议列表,其次是更多关于维护者高效,移植效率用户效率的建议.建议通常是完全矛盾的.(例如,"使用全局变量","不要使用全局变量.")

我在努力将一些"程序员高效"的R代码转换为"计算和维护者高效"代码时考虑到了这一点.

在这些方面,R风格有哪些有趣且有用的提示?哪些实践最有效的程序员,以及解决其他效率概念的等效实践是什么?

performance r

12
推荐指数
2
解决办法
1717
查看次数

出于教学目的,什么是真正干净和清晰的[R]代码的好例子?

我正在与一个由分析师和统计学家组成的小团队合作,讨论什么是中等规模的R代码.他们是聪明人,但他们本身并没有接受过程序员的培训或经验.(我是.)他们已经编写了一些R代码,但是为了使我们的项目可扩展,高效和可维护,它需要变得结构良好,而且更加海盗化.学习成为更好的程序员的更好方法之一是学习优雅的现有代码.任何人都可以提出一些R代码的开源示例(在CRAN或任何地方)您认为特别清晰,有文化和良好的例子吗?功能性好,S3对象还可以,深度魔法不好.

coding-style r

9
推荐指数
1
解决办法
4173
查看次数

防止knitr/Rmarkdown与代码交错块输出

当我使用knitr从以下代码构建HTML文档时:

Chunk Output
========================================================

Outside a chunk.

```{r chunk1, results='asis'}

cat('Inside a chunk\n\n')

for (i in 1:3) {
    cat('* Inside loop #', i, '\n')
}

cat('Outside a loop, but still inside the first chunk')
```

Between chunks.

```{r chunk2, results='asis'}

cat('Inside second chunk')

```
Run Code Online (Sandbox Code Playgroud)

我得到输出,其中代码chunk1cat语句的输出交错.有趣的是,for循环内的输出作为单个块输出.

我宁愿所有的代码chunk1先出现,然后是所有的输出chunk1.有没有办法让Rmarkdown/knitr避免它目前正在进行的更细粒度的交织?

markdown r knitr r-markdown

7
推荐指数
1
解决办法
2628
查看次数

git-p4 提交失败,并显示“不是有效的对象名称 HEAD~261”

我有一个 git 存储库,我想将其镜像到 Perforce 存储库。我已经下载了 git-p4 脚本(不提供弃用警告的较新版本),并且一直在使用它。我已经想出了如何从 Perforce 中提取更改,但是当我尝试从 git repo 同步更改时出现错误。这是我到目前为止所做的:

git clone git@github.com:asdf/qwerty.git
git-p4 sync //depot/path/to/querty
git merge remotes/p4/master     (there was a single README file...)
Run Code Online (Sandbox Code Playgroud)

所以,我已经将原点复制到一个干净的新导演,得到了一个看起来很可爱的合并文件树,并git status表明我是最新的。但:

> git-p4 submit
fatal: Not a valid object name HEAD~261
Command failed: git cat-file commit HEAD~261
Run Code Online (Sandbox Code Playgroud)

git 邮件列表上的这个线程似乎是相关的,但我无法弄清楚他们对所有 A、B 和 C 做了什么。有人可以澄清“无效的对象名称”是什么意思,以及我能做些什么来解决这个问题?我想要做的就是定期将源/主节点快照到 Perforce 中;不需要完整的历史记录。谢谢。

git perforce git-p4

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

NodeSeq匹配失败,但等效的Elem匹配成功 - 为什么?怎么修?

好吧,这对我(Scala的新秀)以及我的同事(在Scala更先进)都很不利.Scala 2.8.0.这是一个问题的演示:

// I've got a var with some XML in it
scala> qq2
res9: scala.xml.Elem = <a><a1>A1</a1><bs><b>B1</b><c>C1</c><d>D1</d></bs></a>

// I can extract sub-elements
scala> (qq2 \ "bs")
res10: scala.xml.NodeSeq = NodeSeq(<bs><b>B1</b><c>C1</c><d>D1</d></bs>)

// but if I try to match against this NodeSeq, it fails to match
scala> (qq2 \ "bs") match {case <bs>{x @ _*}</bs> => 
            for (xx <- x) println("matched " + xx) }      
scala.MatchError: <bs><b>B1</b><c>C1</c><d>D1</d></bs>
        at .<init>(<console>:7)
        at ...

// but if I just type in the XML directly, …
Run Code Online (Sandbox Code Playgroud)

xml scala match

3
推荐指数
1
解决办法
1414
查看次数