Tag: r

正确地扩展ggplot2?

最近ggplot2的一些简洁的用法已经出现,并且已经发布了部分或完整的解决scheme: ggheat 大括号 position_dynamic ggheat值得注意,因为它只是通过绘制而不是返回对象来打破ggplot隐喻。 花括号的解决scheme是值得注意的,因为没有一个真正符合ggplot2高级概念(例如,你应该指定一个你想要打破的点的范围,然后在别的地方能够指定你想要的范围显示的几何 – 箱子,紫色的牛等)。 ggplot2书 (我将很快下令阅读2个在线章节)似乎是关于使用语法和函数,而不是编写新的或扩展现有的。 我想学习添加一个特定的function或者开发一个新的geom,并且正确地做。 ggplot2可能并不是像grid或基础graphics一样的普通graphics软件包,但是有很多graphics只是现有的ggplot2几何graphics的一个或两个扩展。 当这些情况出现时,我通常可以把足够的东西放在一起做一些事情,但是如果我需要几十次相同的情节呢? 如果其他人喜欢它,并且想要使用它,现在他们每次需要该图时都必须通过相同的过程。 在我看来,正确的解决scheme是添加一个stat_heatplot和geom_heatplot ,或添加一个geom_Tuftebox Tufte箱图等,但我从来没有见过一个实际扩展ggplot2的例子; 只是如何使用它的例子。 有什么资源可以深入挖掘ggplot2并开始扩展它? 我特别感兴趣的是如上所述的在轴上指定范围的高级方法,但对ggplot2打勾的一般知识也是受欢迎的。 如果缺less一个连贯的指导(很less有足够先进的修补,因此在这里可能不存在),如何才能了解内部? 检验来源显然是一种方式,但是起始的function是什么等等。

R中更高级别的function – 是否有正式的撰写操作员或咖喱function?

我可以在R中创build一个组合操作符: `%c%` = function(x,y)function(…)x(y(…)) 要这样使用: > numericNull = is.null %c% numeric > numericNull(myVec) [2] TRUE FALSE 但是我想知道是否有一套官方的函数来做这种事情和其他的操作,例如在R中进行。很大程度上是为了减less我的代码中括号,函数关键字等的数量。 我的咖喱function: > curry=function(…){ z1=z0=substitute(…);z1[1]=call("list"); function(…){do.call(as.character(z0[[1]]), as.list(c(eval(z1),list(…))))}} > p = curry(paste(collapse="")) > p(letters[1:10]) [1] "abcdefghij" 例如聚合这是特别好的: > df = data.frame(l=sample(1:3,10,rep=TRUE), t=letters[1:10]) > aggregate(df$t,df["l"],curry(paste(collapse="")) %c% toupper) lx 1 1 ADG 2 2 BCH 3 3 EFIJ 我发现它比以下更优雅和可编辑: > aggregate(df$t, df["l"], […]

我怎么知道R中的数据集将会过大?

我将在R中进行一些日志文件分析(除非我不能在R中完成),并且我知道我的数据需要适合RAM(除非我使用某种types的修补程序,比如keyval存储的接口,也许?)。 所以我想知道如何提前告诉我的数据将在RAM中占用多less空间,以及我是否有足够的空间。 我知道我有多less内存(不是很多,在XP下是3GB),而且我知道我的日志文件最终会有多less行和多less列,以及列条目应该是什么数据types(这大概需要检查它读取)。 我如何将这些结合起来,作为在R中进行分析的go / nogo决定? (据推测,R需要能够有一些RAM来做操作,以及保存数据!)我的直接要求的输出是一堆简单的总结统计,频率,意外事件等,所以我可以写一些parsing器/制表符,这将给我输出我需要的短期,但我也想玩很多不同的方法来作为下一步这个数据,所以我看着使用R的可行性。 我已经看到了很多有关R中大数据集的有用build议,我已经阅读并将重读,但是现在我想更好地理解如何去(a)是否应该去(b)去但希望不得不做一些额外的东西,使其易于pipe理,或(c)在太晚之前跑掉,并在其他语言/环境中做某些事情(build议欢迎…!)。 谢谢!

处理杂乱的日子

我希望你们不要以为我是在寻求关系方面的build议。 我不得不提供调查回复者指定事件发生时间的能力。 什么结果是一个可怕的混乱的string,我真的不知道该怎么办。 除了手工录制之外。 这是一个简短的样本,数千: c(“5月2日/ 12日”,“早上9:45”,“11:00 AM AST”,“4月27日/ 12:00 AST”, “上午11:40 AST”,“2011年4月25日”,“2011年4月12日/ 8:44”,“2011年4月12日/上午8:36”, “2011年4月12日/ 8:30”,“2011年4月12日/ 8:18”,“2011年4月12日/上午8:12”, “2011年4月11日/下午5:57”,“2011年4月11日/下午5:49”,“2011年4月11日/下午5:42”, “2011年4月11日/下午5:36”,“2011年4月11日/ 5:27”,“4月5日上午11:26”, “8:50”,“4月4日12:45”,“4月4日上午10时”,“4月4日10时左右”, “2011年3月18日上午9时33分”,“2011年3月18日上午9时27分”,“DF”,“Fg”,“12:16”, “9:50”,“2011年2月8日/ 12点20分”,“2011年2月4日上午8点34分”,“2011年1月31日下午2点50分”, “2011年1月31日下午2点45分”,“2011年1月31日下午2点38分”,“2011年1月31日下午2点26分”, “11h09”,“11:00 am”,“1h02 pm”,“10h03”,“2h10”,“2011年1月13日上午9:50范”, “2011年1月12日”,“2011年1月12日下午3:59”,“Jan 12 14:19 PM”, “2011年1月12日下午1时35分”,“2011年1月12日下午1时28分”,“1h36”,“9h15”, “9h09”,“8h51”,“8h45”,“8h35”,“1h12 pm”,“12h59”,“11h52 am”, “10h45”,“15h55”,“Dec 31,10 11:11 am”,“Dec 31,10 10:15 am”, “2010年12月30日下午12点32分”,“2010年12月30日下午12点18分”,“上午9点16分”,“上午11点16分”, “11h12”,“9h29 am”,“11h38”,“2010年12月16日”,“2010年12月16日” “2010年12月16日”,“2010年12月15日”,“2010年12月14日”,“12月14日11:38”, “12月14日11:35”,“12月14日11:25”,“2010年12月13日”,“12月10日下午1时38分”, “12月10日下午1点26分”,“12月10日下午1点20分”,“12月10日下午1点12分”,“2010年12月9日” “上午11点10分”,“上午10点59分”,“上午10点50分”,“12月7日星期二9:45乘车时间”, “2010年12月3日下午12时30分”,“2010年12月3日下午12时20分”,“2010年12月3日下午12时10分”, “2010年11月30日4.02pm”,“2010年11月30日”,“11月29日120pm” “2010年11月29日11:27”,“2010年11月29日10时12分”,“11月26日10时18分18秒”, “10:56 am”,“Nov […]

如何更改data.table中的因子列的级别

什么是正确的方法来更改data.table中的factor列的data.table (注意:不是数据框) library(data.table) mydt <- data.table(id=1:6, value=as.factor(c("A", "A", "B", "B", "B", "C")), key="id") mydt[, levels(value)] [1] "A" "B" "C" 我正在寻找像这样的东西: mydt[, levels(value) <- c("X", "Y", "Z")] 但是,当然,上述行不起作用。 # Actual # Expected result > mydt > mydt id value id value 1: 1 A 1: 1 X 2: 2 A 2: 2 X 3: 3 B […]

根据R中的第一列sortingmatrix

我有一个具有以下两列的matrix: 1 349 1 393 1 392 4 459 3 49 3 32 2 94 我想按照第一列的顺序对这个matrix进行sorting,但是我想保留第二列的相应值。 输出结果如下所示: 1 349 1 393 1 392 2 94 3 49 3 32 4 459

如何在R中做printf?

我正在寻找如何做printf in r,ie我想input: printf("hello %d\n", 56 ) 并获得与input相同的输出: print(sprintf("hello %d\n", 56 ) 我读过以下链接: 在R中用print()打印换行符 用R打印信息有什么更漂亮的方法? …所以我知道我可以使用cat("hello", 56) ,这可能是我会做的,但只是想知道是否有一些快捷的方式来写print(sprintf(…)) ? 对不起,如果这个问题是重复的(我不知道)。 search'printf r'非常困难,因为它返回的结果是php,c,…

在R中连接matrix

我如何连接相同列的matrix,但行数不同? 例如,我想连接一个( dim(a) = 15 7000 )和b (dim(b) = 16 7000) ,我希望结果是一个31行× 7000列的matrix。 我可以对不同的行和列的matrix做这个吗? 假设我想把15行7000列的matrix与16行7500列的matrix结合起来。 我可以创build一个数据集?

一次加载多个文件?

所以我们说我有一个.rdata文件的目录 file_names=as.list(dir(pattern="stock_*")) [[1]] [1] "stock_1.rdata" [[2]] [1] "stock_2.rdata" 现在,如何通过一次调用来加载这些文件? 我总是可以这样做: for(i in 1:length(file_names)) load(file_names[[i]]) 但为什么我不能做类似do.call(load, file_names) ? 我想应用程序的function都不会工作,因为他们大多数会返回列表,但没有什么应该返回,只是这些文件需要加载。 我无法得到get函数在这种情况下工作。 想法?

如何手动更改ggplot2中的图例中的键标签

我正在准备出版的阴谋。 我创build了一个堆积箱图,显示每组患者的血清阴性与非阴性的复杂积累的频率。 图例是使用数据框中的标签,这些标签适合于我们正在从事项目工作但不出版的人员。 我想把名字改为读者更快理解的东西。 所以例如运行下面的脚本 grp <- gl(n=4,k=20,labels=c("group a","group b","group c", "group d")) value <- runif(n=80, min=10, max=150) outcome <- cut(value,2) data <- data.frame(grp,value,outcome) ggplot(data, aes(grp, fill=outcome)) + geom_bar() +xlab("group") +ylab("number of subjects") + labs(fill="Serologic response") 该代码创build了不适合发布的关键标签“(10.4,80]”和“(80,150)”,相反,我想要“双重否定”和“对a和/或b正面”。 我想我可以回到数据框,并转换成正确的标签的新variables。 或者我可以重新标记我的因素 ? 不过,我宁愿在绘图的时候这样做。