【发布时间】:2020-06-17 12:50:37
【问题描述】:
我确实有一个似乎无法解决的问题。
假设我有一个类似于下面最小工作示例提供的循环。 我想要 R 做的是为每次迭代创建一个新的“summary”(在本例中为“dogfood_items”、“catfood_items”和“fishfood_items”)变量,即我无法获得表达式“summarize(str_c( food[i], "items", sep="_") = sum(items))" 工作。 定义一个临时变量(例如 a
让我烦恼的是,“str_c(food[1], "items", "sep="_") 独立运行确实可以正常工作。它在summarize(...) 中不起作用。
有没有人知道如何让它工作?
请不要对我太苛刻。我对 R 很陌生。
最好的祝愿,大卫。
library(tidyverse)
food <- c("dogfood", "catfood", "fishfood")
output <- list()
data <- tribble(
~items, ~cost, ~staff, ~foodtype,
100, 200, 11, "dogfood",
120, 20, 12, "dogfood",
40, 120, 12, "catfood",
10, 12, 13, "fishfood",
)
data # view data
for (i in seq_along(food))
output[[i]] <- data %>%
filter(foodtype==food[i]) %>%
summarise(str_c(food[i], "items", sep="_")=sum(items)) # the problem is here !
【问题讨论】:
-
您是否要按食物类型汇总项目?可能有比循环更好的解决方案,比如
group_by()。