我正在使用R的ff包,我有一些ffdf我需要使用的对象(尺寸大约1.5M x 80).虽然我在高效的切片/切割操作中遇到了一些麻烦.
例如,我有两个名为"YEAR"和"AGE"的整数列,我想在YEAR是2005年时创建一个AGE表.
一种方法是:
ffwhich <- function(x, expr) {
b <- bit(nrow(x))
for(i in chunk(x)) b[i] <- eval(substitute(expr), x[i,])
b
}
bw <- ffwhich(a.fdf, YEAR==1999)
answer <- table(a.fdf[bw, "AGE"])
Run Code Online (Sandbox Code Playgroud)
该table()操作速度快,但建设的位向量是相当缓慢.任何人都有更好的建议吗?
我的MatrixR 稀疏,显然对我来说太大as.matrix()了(虽然它也不是超大).有as.matrix()问题的调用是在svd()函数内部,所以我想知道是否有人知道不需要先转换为密集矩阵的SVD的不同实现.
我有一个不规则的时间序列(xtsin R),我想应用一些时间窗口.例如,给定如下的时间序列,我想计算每个离散的3小时窗口中有多少观察数,例如2009-09-22 00:00:00:
library(lubridate)
s <- xts(c("OK", "Fail", "Service", "OK", "Service", "OK"),
ymd_hms(c("2009-09-22 07:43:30", "2009-10-01 03:50:30",
"2009-10-01 08:45:00", "2009-10-01 09:48:15",
"2009-11-11 10:30:30", "2009-11-11 11:12:45")))
Run Code Online (Sandbox Code Playgroud)
我显然不能使用period.apply()或split()不这样做,因为那些会省略没有观察的时期,我不能给它一个开始时间.
我想要的简单计数问题的输出(当然,我的实际任务对于每个段都更复杂!)如果我一次聚合3天就会是这样的:
2009-09-22 1
2009-09-25 0
2009-09-28 0
2009-10-01 3
2009-10-04 0
2009-10-07 0
2009-10-10 0
2009-10-13 0
2009-10-16 0
2009-10-19 0
2009-10-22 0
2009-10-25 0
2009-10-28 0
2009-10-31 0
2009-11-03 0
2009-11-06 0
2009-11-09 2
Run Code Online (Sandbox Code Playgroud)
谢谢你的指导.
我的当前git status看起来像这样:
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: docs/file3.org
# modified: src/main/R/lib.R
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: docs/file3.org
# modified: src/main/R/lib.R
Run Code Online (Sandbox Code Playgroud)
我想首先将阶段性更改提交docs/file3.org,然后再进行其他阶段性更改.但是,如果我这样做git commit -m '...' docs/file3.org,它将提交对该文件的分阶段和非分阶段更改.
是否有捷径可寻?或者我是否需要进行未stash分级的更改,取消其中一个文件,提交另一个,重新设置,提交和stash pop?
我有一个 Git 别名update,我想为其配备分支名称完成功能。别名定义如下:
[alias]
update = "!f() { git push . origin/$1:$1; }; f"
Run Code Online (Sandbox Code Playgroud)
(它使用其上游版本更新本地跟踪分支,而无需检查该分支。不过,对于特定问题并不重要。)
我希望该命令为其$1参数补全现有的分支名称。我知道我可以定义一个调用_git-update来控制完成的函数,但是我缺少一些使其工作的部分:
_git-update ()
{
***some-function-here*** "$(__git_branch_names)"
}
Run Code Online (Sandbox Code Playgroud)
我正在使用安装在 OS X 上的完成brew install zsh-completions,这是在https://github.com/zsh-users/zsh-completions设置的。
(这个问题直接类似于/sf/answers/2891556601/,但针对 Zsh 而不是 Bash。)
问题:Repository:打包DESCRIPTION文件中字段的目的和来源是什么?
在官方文件中的DESCRIPTION文件中似乎没有提到它,在Hadley的书中也没有提到它。它似乎是在CRAN上传期间自动填充的-例如,它不在dplyr原始的description源中,但在CRAN的tarball Description中存在:
...
Maintainer: Hadley Wickham <hadley@rstudio.com>
Repository: CRAN
Date/Publication: 2019-05-14 12:20:03 UTC
Run Code Online (Sandbox Code Playgroud)
背景:我问,因为packrat似乎是使用此字段的存在/不存在来确定是否可以在某个位置的存储库中找到软件包-如果找不到,则需要您手动下载。对于在类似CRAN的本地存储库中托管的本地开发的软件包,这是一个问题。
我们可以开始将Repository:字段添加到我们的本地包中,但这对于所有以前的版本来说都是很痛苦的事情,它会弄乱他们的tarball校验和,等等。在不了解其用途的情况下,我不想这样做。
我不确定如何通过对象data元素中的数据函数来进行研究ggplot.在下面的玩具示例中,我想要做的是这样的:
df <- data.frame(x=1:8, y=runif(8), z=8:1)
ggplot(df, aes(x=x, y=y)) + geom_point() + facet_wrap( ~ (z %% 2))
Run Code Online (Sandbox Code Playgroud)
但这给出了错误:Error in layout_base(data, vars, drop = drop) : At least one layer must contain all variables used for facetting.
我可以通过转换数据框来实现所需的结果:
ggplot(transform(df, z=z%%2), aes(x=x, y=y)) + geom_point() + facet_wrap( ~ z)
Run Code Online (Sandbox Code Playgroud)
但通常不希望使用这样的转换,例如,如果我已经获得了一个ggplot对象,并且我想为它添加一些特殊的方面.
我们的组织使用Sonatype Nexus来管理工件,无论它们是我们开发的内部托管的东西,还是Apache或类似的其他存储库的代理.大多数东西都是基于JAR的.
我的小组在R中完成了大部分工作,我们想知道1)在Nexus中将内部代码部署为R包,以及2)在Nexus中为CRAN镜像创建代理是否有意义.我想这需要一些胶水代码,但我对Nexus不太满意,所以我不确定那会是什么样子.理想情况下,我们可以直接点击Nexus来安装R软件包,而不是先下载并手动安装.
有人有建议或先例吗?
在什么情况下readRDS()R 中的函数尝试加载包/命名空间?我很惊讶在新的R会议中看到以下内容:
> loadedNamespaces()
[1] "base" "datasets" "graphics" "grDevices" "methods" "stats"
[7] "tools" "utils"
> x <- readRDS('../../../../data/models/my_model.rds')
There were 19 warnings (use warnings() to see them)
> loadedNamespaces()
[1] "base" "class" "colorspace" "data.table"
[5] "datasets" "dichromat" "e1071" "earth"
[9] "evaluate" "fields" "formatR" "gbm"
[13] "ggthemes" "graphics" "grDevices" "grid"
[17] "Iso" "knitr" "labeling" "lattice"
[21] "lubridate" "MASS" "methods" "munsell"
[25] "plotmo" "plyr" "proto" "quantreg"
[29] "randomForest" "RColorBrewer" "reshape2" "rJava"
[33] "scales" "spam" "SparseM" "splines"
[37] "stats" "stringr" "survival" …Run Code Online (Sandbox Code Playgroud) 有没有一种方法可以使用Neo4j Java API将一些数据从一个数据库迁移到另一个数据库?我的用例是将几千个节点加载到一个临时数据库中,进行一系列转换,然后将结果导出到主数据库并删除临时数据库.
我不想破坏目标数据库中的数据,这是一个附加过程.我在网上看到很多人(例如这里)说"只是将数据目录复制到新位置",但当然这会破坏目的地.
更新 - 我试验过neo4j-shell -path tmpDir -c "DUMP MATCH n RETURN n;" | neo4j-shell -path dbDir -file -,但它真的非常慢.生成输出似乎足够快,但即使在一个新的空数据库中,它仍然是冰冷的.