【发布时间】:2015-11-20 06:01:28
【问题描述】:
我正在尝试使用 R 3.2.2 从 dplyr 0.4.3 函数创建新的数据帧。
我想要做的是使用 dplyr::filter 创建一些新的数据帧,将数据从一个巨大的数据帧中分离出来,分成一堆更小的数据帧。
对于我的可重现的基本案例沼泽简单示例,我使用了这个:
filter(mtcars, cyl == 4)
我知道我需要将它分配给它自己的数据框,所以我开始:
paste("Cylinders:", x, sep = "") <- filter(mtcars, cyl == 4))
这不起作用——它给了我在这里发现的错误:Assignment Expands to Non-Language Object
从那里,我发现了这个:Create A Variable Name with Paste in R
(另外,对以上作者表示感谢)
这让我想到了这个,它有效:
assign(paste("gears_cars_cylinders", 4, sep = "_"), filter(mtcars, cyl == 4)) %>%
group_by(gear) %>%
summarise(number_of_cars = n())
通过“工作”,我的意思是我得到了一个名为 gears_cars_cylinders_4 的数据框,其中包含来自
的所有好东西filter(mtcars, cyl == 4) %>%
group_by(gear) %>%
summarise(number_of_cars = n())
但最终,我认为我需要将整个事情包装在一个函数中,并能够将来自mtcars$cyl 的柱面编号提供给它。我在想plyr::ldply(mtcars$cyl, function_name)之类的东西?
在我的真实数据中,我需要将大约 70 个不同的类拆分为单独的数据框,然后放入 Shiny 中的 DT::datatable 选项卡中,这简直是一团糟。无论如何。
当我尝试这个时:
function_name <- function(x){
assign(paste("gears_cars_cylinders", x, sep = "_"), filter(mtcars, cyl == x)) %>%
group_by(gear) %>%
summarise(number_of_cars = n())
}
然后是function_name(6),
我将数据框的输出显示到屏幕上,但不是带有名称的数据框。
我在这里寻找答案吗?
【问题讨论】: