gpt4 book ai didi

r - 在 dplyr 链中使用 table()

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

有人可以解释为什么table()在 dplyr-magrittr 管道操作链中不起作用?这是一个简单的reprex:

tibble(
type = c("Fast", "Slow", "Fast", "Fast", "Slow"),
colour = c("Blue", "Blue", "Red", "Red", "Red")
) %>% table(.$type, .$colour)

Error in sort.list(y) : 'x' must be atomic for 'sort.list' Have you called 'sort' on a list?



但这当然有效:
df <- tibble(
type = c("Fast", "Slow", "Fast", "Fast", "Slow"),
colour = c("Blue", "Blue", "Red", "Red", "Red")
)

table(df$type, df$colour)


Blue Red
Fast 1 2
Slow 1 1

最佳答案

此行为是设计使然:https://github.com/tidyverse/magrittr/blob/00a1fe3305a4914d7c9714fba78fd5f03f70f51e/README.md#re-using-the-placeholder-for-attributes

由于您没有 .就其本身而言,tibble 仍然作为第一个参数传递,所以它真的更像是

... %>% table(., .$type, .$colour)

官方的 magrittr 解决方法是使用花括号
... %>% {table(.$type, .$colour)}

关于r - 在 dplyr 链中使用 table(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44528173/

25 4 0