gpt4 book ai didi

r - 使用 pmap 遍历 tibble 的行

转载 作者:行者123 更新时间:2023-12-03 23:39:20 25 4
gpt4 key购买 nike

我有一个非常简单的 tibble,我想遍历它的行以使用 pmap 应用函数功能。我想我可能误解了 pmap 上的一些观点函数,但我大多难以选择参数。所以
我想知道我是否应该使用 rowwise在这种情况下使用 pmap 函数或不。不过我没见过案例。
另一个问题是使用列表或 select 选择要迭代的变量。功能:

# Here is my tibble
# Imagine I would like to apply a `n_distinct` function with pmap on it every rows

df <- tibble(id = c("01", "02", "03","04","05","06"),
A = c("Jan", "Mar", "Jan","Jan","Jan","Mar"),
B = c("Feb", "Mar", "Jan","Jan","Mar","Mar"),
C = c("Feb", "Mar", "Feb","Jan","Feb","Feb")
)

# It is perfectly achievable with `rowwise` and `mutate` and results in my desired output

df %>%
rowwise() %>%
mutate(overal = n_distinct(c_across(A:C)))

# A tibble: 6 x 5
# Rowwise:
id A B C overal
<chr> <chr> <chr> <chr> <int>
1 01 Jan Feb Feb 2
2 02 Mar Mar Mar 1
3 03 Jan Jan Feb 2
4 04 Jan Jan Jan 1
5 05 Jan Mar Feb 3
6 06 Mar Mar Feb 2

# But with `pmap` it won't.


df %>%
select(-id) %>%
mutate(overal = pmap_dbl(list(A, B, C), n_distinct))


# A tibble: 6 x 4
A B C overal
<chr> <chr> <chr> <dbl>
1 Jan Feb Feb 1
2 Mar Mar Mar 1
3 Jan Jan Feb 1
4 Jan Jan Jan 1
5 Jan Mar Feb 1
6 Mar Mar Feb 1

我只需要对 pmap的申请做一点解释。对于 tibbles 的 rowwise 迭代,所以我非常感谢提前提供的任何帮助,谢谢。

最佳答案

我能够追踪到这个问题,但不能在这里说它是错误还是功能。重点是n_distinct()pmap将给定的输入处理为具有 3 列的数据框。申请时n_distinct()对于数据框,它计算不同行的数量,因此每行中的 1

n_distinct(tibble(a = c(1, 2, 2),
b = 3))
#> [1] 2
诀窍是先将输入转换为向量,然后将其传递给 n_distinct
df %>%
select(-id) %>%
mutate(overal = pmap_dbl(list(A, B, C), ~ n_distinct(c(...))))
#> # A tibble: 6 x 4
#> A B C overal
#> <chr> <chr> <chr> <dbl>
#> 1 Jan Feb Feb 2
#> 2 Mar Mar Mar 1
#> 3 Jan Jan Feb 2
#> 4 Jan Jan Jan 1
#> 5 Jan Mar Feb 3
#> 6 Mar Mar Feb 2

关于r - 使用 pmap 遍历 tibble 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66833328/

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