gpt4 book ai didi

r - map_dfr : populate . id 列带有字符串标签而不是没有 .x 命名的索引

转载 作者:行者123 更新时间:2023-12-02 01:01:25 24 4
gpt4 key购买 nike

我想标注.id map_dfr 的输出中的列条目使用单词而不是索引值,但我的输入未命名(即 how map accepts string values for .id )。

将名称映射到 .id 的最佳方法是什么?在这种情况下的领域?

示例数据:

n <- 20
df <- data.frame(foo_1=rnorm(n), foo_2=rnorm(n), foo_3=rnorm(n),
foo_a=runif(n), t_foo=runif(n),
bar_1=rnorm(n), bar_2=rnorm(n), bar_3=rnorm(n),
bar_a=runif(n), t_bar=runif(n))

两者 foobar是心理测量量表,我想测量每个量表的可靠性,使用 psych::alpha() .
唯一相关的列具有命名模式 foo_<int> (对于 foo 比例)或 bar_<int>bar比例(因此下面的正则表达式匹配)。

实际上,我有许多尺度,以及构成每个尺度的许多列。所以我想 map可能是进行计算的好方法,如下所示:
require(psych)
require(tidyverse)

categories <- c("foo", "bar")

categories %>%
map_dfr(~df %>%
select(matches(paste0("^",.x,"_?\\d"))) %>%
do(psych::alpha(., check.keys=TRUE)$total), .id="scale") %>%
select(scale, raw_alpha, std.alpha)

scale raw_alpha std.alpha
1 1 0.2275679 0.2791238
2 2 0.4141225 0.4130054

但我要 scale取值 foobar :
  scale raw_alpha std.alpha
1 foo 0.2275679 0.2791238
2 bar 0.4141225 0.4130054

在这个玩具示例中,手动创建 categories <- c(foo="foo", bar="bar") 也不错。 ,但是有很多需要付出太多努力的尺度。

我的一个想法是自动化 foo="foo"使用类似 zip 的方法来自 Python,用于创建键值对向量,例如 c(scale_name="scale_name",...) ,但我不知道如何在 R 中做到这一点。无论如何,这种方法不是很漂亮(尽管我很乐意只满足于功能性)。

关于如何最好地获得我正在寻找的输出格式的任何建议?

最佳答案

除非我遗漏了一些更复杂的问题,否则很容易解决。您只需添加 mutatemap_dfr ,因此您正在根据传递给 map_dfr 的值创建一列.你可以放弃 .id位并使用 mutate调用 scale柱子;我只是想展示scalescale_cat并排。

library(tidyverse)

set.seed(123)
n <- 20
df <- data.frame(foo_1=rnorm(n), foo_2=rnorm(n), foo_3=rnorm(n),
foo_a=runif(n), t_foo=runif(n),
bar_1=rnorm(n), bar_2=rnorm(n), bar_3=rnorm(n),
bar_a=runif(n), t_bar=runif(n))

categories <- c("foo", "bar")

categories %>%
map_dfr(~df %>%
select(matches(paste0("^",.x,"_?\\d"))) %>%
do(psych::alpha(., check.keys=TRUE)$total) %>%
mutate(scale_cat = .x),
.id="scale") %>%
select(scale, scale_cat, raw_alpha, std.alpha)
#> scale scale_cat raw_alpha std.alpha
#> 1 1 foo 0.2606448 0.2601066
#> 2 2 bar 0.4571981 0.4827263

创建于 2018-05-12 由 reprex package (v0.2.0)。

关于r - map_dfr : populate . id 列带有字符串标签而不是没有 .x 命名的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50312102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com