- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 dplyr 和 purrr 整理模拟研究的结果。我的结果保存为数据帧列表,其中包含几种不同分类算法的结果,我尝试使用 purrr 和 dplyr 来总结这些结果。
我正在尝试计算- 分配给每个簇的对象数量- 集群中实际属于该集群的对象数量- 使用 3 种不同算法 (KEEP1 - KEEP3) 的真阳性、假阳性、假阴性和真阴性的数量- 对于其中 2 个算法,我可以访问处于集群中的概率,因此我可以将其与 alpha 的替代选择进行比较 - 这样我就可以使用不同的 alpha 选择来计算真阳性等。
我发现了这个:https://github.com/tidyverse/dplyr/issues/3101 ,我成功地在列表的单个元素上使用它来获得我想要的结果:
f <- function(.x, .y) {
sum(.x & .y)
}
actions <- list(
.vars = lst(
c('correct'),
c('KEEP1', 'KEEP2', 'KEEP3'),
c('pval1', 'pval2')
),
.funs = lst(
funs(Nk = length, N_correct = sum),
funs(
TP1 = f(., .y = correct),
FN1 = f(!(.), .y = correct),
TN1 = f(!(.), .y = !(correct)),
FP1 = f(., .y = !(correct))
),
funs(
TP2 = f((. < alpha0) , .y = correct),
FN2 = f(!(. < alpha0), .y = correct),
TN2 = f(!(. < alpha0), .y = !(correct)),
FP2 = f((. < alpha0), .y = !(correct))
)
)
)
reproducible_data <- replicate(2,
data_frame(
k = factor(rep(1:10, each = 20)), # group/category
correct = sample(x = c(TRUE, FALSE), 10 * 20, replace = TRUE, prob = c(.8, .2)),
pval1 = rbeta(10 * 20, 1, 10),
pval2 = rbeta(10 * 20, 1, 10),
KEEP1 = pval1 < 0.05,
KEEP2 = pval2 < 0.05,
KEEP3 = runif(10 * 20) > .2,
alpha0 = 0.05,
alpha = 0.05 / 20 # divided by no. of objects in each group (k)
),
simplify = FALSE)
# works
df1 <- reproducible_data[[1]]
pmap(actions, ~df1 %>% group_by(k) %>% summarize_at(.x, .y)) %>%
reduce(inner_join,by = 'k')
现在,我想使用 map 对整个列表执行此操作。但是,我无法再访问变量“正确”(它还没有足够远,看不到 alpha 或 alpha0,但可能会发生相同的问题)。我仍在学习 dplyr/purrr,但我的实验并没有证明有用。
# does not work
out_summary <- map(
reproducible_data,
pmap(actions, ~ as_tibble(.) %>% group_by("k") %>% summarize_at(.x, .y)) %>%
reduce(inner_join,by = 'k')
)
# this doesn't either
out_summary <- map(
reproducible_data,
pmap(actions, ~ as_tibble(.) %>% group_by("k") %>% summarize_at(.x, .y, alpha = alpha, alpha0 = alpha0, correct = correct)) %>%
reduce(inner_join,by = 'k')
)
在map中,我在$group_by(k)$中看不到变量'k',除非它被引用$group_by('k')$,但当我刚刚使用pmap时不需要引用它。我尝试了各种方法将正确的变量传递给这些函数,但我仍在学习 dplyr 和 purrr,但尚未成功。
还有一点需要注意 - 实际数据存储为常规数据帧,因此我需要在 pmap 函数中使用 $as_tibble()$ 。在此示例中删除它时,我遇到了一些不同的错误,因此我选择将其添加回来,这样我就会遇到相同的问题。谢谢!
最佳答案
map(
reproducible_data,
function(df1) {
pmap(actions, ~ df1 %>%
as_tibble() %>%
group_by(k) %>%
summarize_at(.x, .y)) %>%
reduce(inner_join, by = "k")
}
)
我认为使用 map
时你的论点可能会混淆。和pmap
同时。我用了function
map
的语法定义df1
尝试解决这个问题。其余部分看起来不错(尽管我切换到 pmap_df
以返回数据帧(没有它,列表的结构很丑陋,而 pmap_df
是让它变得漂亮的最简单方法。LMK,如果它不是预期的输出。👍
group_by("k")
的问题与 group_by(k)
另外:写group_by("k")
实际上创建一个变量“k”并用字符“k”填充它,然后使用它进行分组。这将使您的代码运行,但它不会做您喜欢的事情。有时,这种问题实际上是由于之前一两行发生的错误(或者,对于 dplyr
,之前一两行)发生的错误。在这种情况下,map
没有通过df1
在您需要的地方。
关于r - map + pmap,找不到变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48491602/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!