gpt4 book ai didi

r - dplyr 与 matches() 错误 : Problem with `mutate()` input `..1` 1` must be a vector, 不是函数

转载 作者:行者123 更新时间:2023-12-05 02:38:30 26 4
gpt4 key购买 nike

一个数据框:

library(scales)
library(tidyverse)

mydf <- data.frame(
x = 1:3,
a_pct = c(0.3, 0.2, 0.1),
y = letters[1:3],
b_pct = c(0.5, 0.6, 0.7)
)

我想改变名称包含字符串“_pct”的那些字段。尝试过:

mydf %>% mutate(across(matches('_pct'), ~percent))

给出错误:

Error: Problem with `mutate()` input `..1`.
ℹ `..1 = across(matches("_pct"), ~percent)`.
x `..1` must be a vector, not a function.

我可以通过这种方式将 matches()across() 一起使用吗?

最佳答案

如果我们使用 lambda(~ 或在 base R function(x) 中)必须调用它

mydf %>%
mutate(across(matches('_pct'), ~percent(.)))
x a_pct y b_pct
1 1 30% a 50%
2 2 20% b 60%
3 3 10% c 70%

或者不使用 lambda 表达式直接调用

mydf %>% 
mutate(across(matches('_pct'), percent))
x a_pct y b_pct
1 1 30% a 50%
2 2 20% b 60%
3 3 10% c 70%

关于r - dplyr 与 matches() 错误 : Problem with `mutate()` input `..1` 1` must be a vector, 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69531914/

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