我尝试使用以下链接中的代码,使用bigvis包
进行大型数据集可视化http://rstudio-pubs-static.s3.amazonaws.com/7457_8740a6a481f042ad8d2bce17e7b5bd04.html#Grouped
链接中的功能是:
bin_by <- function(.data, ...){
plyr:::list_to_dataframe(do(.data,
function(.data, ...){
eval(substitute(condense(bin(...))),
env=.data,
enclos=parent.frame())
}
, ...)
,labels=attr(.data, 'labels'))
}
但是当我跑步时,R给了我这样的错误:
错误:只能为do()提供单个未命名参数 来自:named_args(args)
任何人都可以帮我理解这个吗?非常感谢!! 我不想直接运行浓缩和装箱,因为我想做箱形图,如果有人能告诉我如何用bigvis这样做,我也会非常感激。
答案 0 :(得分:0)
函数dplyr :: do和bugvis :: bin已经大大改变了。以下代码将起作用(将bigvis / dplyr更新为当前的2017-04-28 Github版本)
确实,您不再需要list_to_dataframe了。我认为do
函数不会接受多个未命名的参数。另外,由于'...'用于传递未加引号的符号,因此检查函数(这里是bigvis :: vis)是否已更新始终是一个好习惯。
注意:
dplyr::do
功能可以在这里删除
plyr::list_to_dataframe
导致其他问题,因为do / bin函数的返回值已更新。
library(ggplot2)
library(bigvis)
library(dplyr)
library(data.table)
f<-function(.data,x, width){
eval(substitute(condense(bin(x, width=width))),
env=.data,
enclos=parent.frame())
}
bin_by <- function(.data, x, width){
do(.data,f(.,x,width = width))
}
num <- 10e6
binwidth=1
obs <- rbind(data.frame(x=rnorm(num), name='normal'),
data.frame(x=rnorm(num, sd=6), name='wide'),
data.frame(x=rnorm(num, mean=3), name='right'))
bins <- bin_by(obs, x, binwidth)
ggplot(data=bins, aes(x=x, y=.count)) + geom_line() + geom_area(alpha=1/10, position="identity")