gpt4 book ai didi

r - grouped_df_impl(data, unname(vars), drop) : 中的错误

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

这是我第一次尝试编写一个内部有 2 个管道的函数,这样当我给一个名称 x 和变量名称 y 时,结果将被聚合,加入数据并删除。当我运行我编写的函数时,标题错误消息不断出现,我不知道问题是什么。

mrr <- function(x, y){ 
x <- data %>%
group_by(y) %>%
summarize(n=n(),
sum=sum(unit_sales))
data <- data %>%
left_join(x, by="y") %>%
mutate(str_c(x,y))=(sum-unit_sales)/(n-1) %>%
select(-one_of(n, sum)) %>%
rm(x)
}

我在搜索框中给出错误信息时找到了相关结果,但答案与我的问题无关。如果您有任何想法,请告诉我。

最佳答案

这里发生了很多事情。

首先,您不需要将 x 输入到函数中……因为您会立即覆盖它。我不确定您是否打算输入数据。

接下来,您的 group_by 不起作用,因为 y 在您的数据集中不存在...... y 的内容是标题的名称。我们可以使用 group_by_() 来解决这个问题。

在那之后,你的 mutate 命令被破坏了。 mutate(str_c(x,y))是一个完整的 mutate 语句,因为 () 是关闭的。此外, str_c(x,y) 试图获取数据帧 x 并与 y 中的字符连接以获取单个字符......这充其量会给你一个数据帧,更糟糕的是给出错误。最好只指定一个列名。

在同一个 mutate 中,你可能会遇到 =(sum-unit_sales)/(n-1) 中的错误.如果 n = 1,那么您会得到 NaN 的除以零错误输出.如果你愿意,你可以离开这个。只需了解您的方程式实际上在做什么。

接近, -one_of() 命令需要一个字符向量(不仅仅是列名。你可以做 select(-n,-sum) 或者你可以做 select(-one_of(c("n", "sum")))

最后,你真的不需要使用 rm(x)因为无论如何都会在函数运行完成后删除该变量。

我不得不猜测列的名称...你的名字会有所不同,因为你没有给我一个样本数据集。

data <- data.frame(d1 = runif(n=10,min=1,max=10),
d2 = runif(n=10,min=1,max=10),
unit_sales = runif(n=10,min=1,max=10))

mrr <- function(data, y){
x <- data %>%
group_by_(.dots = y) %>%
summarize(n=n(),
sum=sum(unit_sales))
data <- data %>%
left_join(x, by=y) %>%
mutate(someCol=(sum-unit_sales)/(n)) %>%
select(-one_of(c("n", "sum"))) #%>%
# rm(x)
}

(mrr(data,"d2"))

关于r - grouped_df_impl(data, unname(vars), drop) : 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47721747/

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