小编Aja*_*jar的帖子

dplyr中的标准评估:summarise_作为字符串给出的变量

我想在一个内部引用一个未知的列名summarise.dplyr 0.3允许使用变量引用列名称中引入的标准评估函数,但是当您base在例如a中调用R函数时,这似乎不起作用summarise.

library(dplyr)

key <- "v3"
val <- "v2"
drp <- "v1"

df <- data_frame(v1 = 1:5, v2 = 6:10, v3 = c(rep("A", 3), rep("B", 2)))
Run Code Online (Sandbox Code Playgroud)

df看起来像这样:

> df
Source: local data frame [5 x 3]

  v1 v2 v3
1  1  6  A
2  2  7  A
3  3  8  A
4  4  9  B
5  5 10  B
Run Code Online (Sandbox Code Playgroud)

我想放弃v1,按v3分组,并为每个组加上v2:

df %>% select(-matches(drp)) %>% group_by_(key) %>% summarise_(sum(val, na.rm = TRUE))

Error in …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

有效地执行行式分布测试

我有一个矩阵,其中每一行都是一个分布的样本.我想对使用的分布进行滚动比较,ks.test并在每种情况下保存测试统计.从概念上实现这个概念的最简单方法是使用循环:

set.seed(1942)
mt <- rbind(rnorm(5), rnorm(5), rnorm(5), rnorm(5))

results <- matrix(as.numeric(rep(NA, nrow(mt))))

for (i in 2 : nrow(mt)) {

  results[i] <- ks.test(x = mt[i - 1, ], y = mt[i, ])$statistic

}
Run Code Online (Sandbox Code Playgroud)

但是,我的实际数据有大约400列和大约300,000行,我有很多例子.所以我希望这很快.Kolmogorov-Smirnov测试并不是所有数学上复杂的测试,所以如果答案是"实现它Rcpp",我会勉强接受,但我会感到有些惊讶 - 在一对上进行计算已经非常快了在R.

方法我已经尝试但无法工作:dplyr使用rowwise/do/lag,zoo使用rollapply(这是我用来生成分布),并data.table在循环中填充(编辑:这个工作,但它仍然很慢).

optimization r rollapply

8
推荐指数
1
解决办法
581
查看次数

标签 统计

r ×2

dplyr ×1

optimization ×1

rollapply ×1