小编And*_*rie的帖子

ggplot2中直方图条的反向填充顺序

我注意到在使用绘图创建的直方图中填充条形的默认值是反向字母顺序,而图例按字母顺序排序.我有什么方法可以按字母顺序排序吗?问题在下面的示例图中很明显.奖金问题:我如何将从左到右的条形顺序从字母顺序更改为减少计数总数?谢谢

df <- data.frame(
  Site=c("A05","R17","R01","A05","R17","R01"),
  Group=c("Fungia","Fungia","Acro","Acro","Porites","Porites"),
  Count=c(6,8,6,7,2,9),
  Total=c(13,10,15,13,10,15)
)

  Site   Group Count Total
1  A05  Fungia     6    13
2  R17  Fungia     8    10
3  R01    Acro     6    15
4  A05    Acro     7    13
5  R17 Porites     2    10
6  R01 Porites     9    15

qplot(df$Site,data=df,weight=df$Count,geom="histogram", fill=df$Group, ylim = c(0,16)) + 
  xlab("Sites") + 
  ylab("Counts") + 
  scale_fill_hue(h=c(0,360), l=70, c=70,name = "Emergent Groups")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我试图将计数从高到低和填充颜色排序,以便它们匹配图例的字母顺序.我一直试图用初始帖子的提示调整它几个小时但没有成功.任何有关这方面的帮助将非常感谢!!!

r ggplot2

13
推荐指数
1
解决办法
9883
查看次数

随机化平衡的实验设计

我正在编写一些代码来为市场研究生成平衡的实验设计,特别是用于联合分析和最大差异缩放.

第一步是生成部分平衡的不完整块(PBIB)设计.这是直接使用R包AlgDesign.

对于大多数类型的研究而言,这样的设计就足够了.然而,在市场研究中,人们希望控制每个区块中的订单效应.这是我会感谢一些帮助的地方.

创建测试数据

# The following code is not essential in understanding the problem, 
# but I provide it in case you are curious about the origin of the data itself.
#library(AlgDesign)
#set.seed(12345)
#choices <- 4
#nAttributes <- 7
#blocksize <- 7
#bsize <- rep(choices, blocksize)
#PBIB <- optBlock(~., withinData=factor(1:nAttributes), blocksizes=bsize)
#df <- data.frame(t(array(PBIB$rows, dim=c(choices, blocksize))))
#colnames(df) <- paste("Item", 1:choices, sep="")
#rownames(df) <- paste("Set", 1:nAttributes, sep="")

df <- structure(list(
  Item1 = c(1, 2, 1, 3, 1, 1, …
Run Code Online (Sandbox Code Playgroud)

r mathematical-optimization

12
推荐指数
1
解决办法
1180
查看次数

为什么在system.time()中计算表达式会使变量在全局环境中可用?

有人可以解释在评估表达式时会发生什么system.time?特别是,为什么expr参数中声明的变量在全局环境中可见?

system.time除了评估传递给函数的表达式之外,这里只是内部版本的精简版本:

st <- function(expr){
  expr
}

st(aa <- 1)
aa
[1] 1
Run Code Online (Sandbox Code Playgroud)

显然,这样做的结果是它aa在全局环境中创建了变量.这让我感到困惑,因为我认为在函数内部赋值变量使其在范围内是局部的.

这里发生了什么?

scope r

12
推荐指数
2
解决办法
659
查看次数

lambda演算对返回值有什么看法?

现在是lambda演算的一个众所周知的定理,任何带有两个或多个参数的函数都可以通过currying作为一个带有一个参数的函数链来编写:

# Pseudo-code for currying
f(x,y) -> f_curried(x)(y)
Run Code Online (Sandbox Code Playgroud)

事实证明,这不仅在研究函数的行为方面,而且在实际应用中都非常强大(Haskell等).

但是,似乎没有讨论返回值的函数.程序员通常通过返回一些元对象(R中的列表,C++中的结构等)来处理它们无法从函数返回多个值.它总是让我觉得有点像一个kludge,但它是一个有用的.

例如:

# R code for "faking" multiple return values
uselessFunc <- function(dat) {
   model1 <- lm( y ~ x , data=dat )
   return( list( coef=coef(model1), form=formula(model1) ) )
}
Run Code Online (Sandbox Code Playgroud)

问题

  1. lambda演算有多少关于多重返回值的说法吗?如果是这样,会得出任何令人惊讶的结论吗?
  2. 同样,任何语言都允许真正的多重返回值吗?

r lambda-calculus return-value

12
推荐指数
1
解决办法
809
查看次数

如何将ggplot标题与窗口对齐而不是绘制网格?

ggplot2版本0.9中,绘图标题的对齐行为发生了变化.而在v0.8.9中,对齐是相对于绘图窗口的,而在v0.9中,对齐是相对于绘图网格的.

现在,虽然我大多同意这是理想的行为,但我经常有很长的情节标题.

问题:有没有一种方法可以将绘图标题与绘图窗口而不是绘图网格对齐?

我正在寻找能够自动对齐情节的解决方案.换句话说,手动对齐使用hjust对我来说不起作用(我在每个项目的数百个图上运行).

任何grid直接使用的解决方案也是可接受的.


一些示例代码和图:(注意标题如何在窗口右侧被截断).

dat <- data.frame(
  text = c(
    "It made me feel very positive to brand X", 
    "It was clear and easy to understand",
    "I didn't like it al all"),
  value=runif(3)
)
library(ggplot2)
ggplot(dat, aes(text, value)) + 
  geom_bar(stat="identity") +
  coord_flip() +
  opts(title="Thinking about the ad that you've just seen, do you agree with the following statements? I agree that...") +
  theme_bw(16)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r ggplot2

12
推荐指数
1
解决办法
1436
查看次数

如何从CRAN中提取所有包作者的名称

为了庆祝标签中的 100,000个问题,我想创建一个CRAN上所有包作者名称的列表.

最初,我认为我可以使用,available.packages()但遗憾的是,这不包含作者的专栏.

pdb <- available.packages()
colnames(pdb)

 [1] "Package"               "Version"               "Priority"             
 [4] "Depends"               "Imports"               "LinkingTo"            
 [7] "Suggests"              "Enhances"              "License"              
[10] "License_is_FOSS"       "License_restricts_use" "OS_type"              
[13] "Archs"                 "MD5sum"                "NeedsCompilation"     
[16] "File"                  "Repository"   
Run Code Online (Sandbox Code Playgroud)

DESCRIPTION每个包的文件中都提供了此信息.所以我可以想到两种蛮力方式,两者都不是很优雅:

  1. 下载每个6,878个软件包并DESCRIPTION使用读取文件base::read.dcf()

  2. 刮掉CRAN上的每个包页面.例如,https://cran.r-project.org/web/packages/MASS/index.html告诉我Brian Ripley是MASS的作者.

我不想下载所有CRAN来回答这个问题.而且我也不想刮HTML,因为DESCRIPTION文件中的信息是一个整齐格式的person对象列表(请参阅参考资料?person).

如何使用CRAN上的信息轻松构建包作者列表?

r cran

12
推荐指数
2
解决办法
325
查看次数

如何在R中复制月度周期图表

我想输出一个类似于本页(右侧)所示的图表,使用R和任何可以使它看起来很好的包:

http://processtrends.com/pg_charts_monthly_cycle_chart.htm

有谁接受挑战?:)

谢谢!

plot r ggplot2

11
推荐指数
2
解决办法
3940
查看次数

根据值绘制带条件颜色的折线图

我想绘制折线图.根据值,它应该改变它的颜色.我发现的是:

plot(sin(seq(from=1, to=10,by=0.1)),type="p", 
       col=ifelse(sin(seq(from=1, to=10,by=0.1))>0.5,"red","yellow"))
Run Code Online (Sandbox Code Playgroud)

这样可行.但是一旦我从type ="p"变为type ="l",条件着色就会消失.

这种行为有意吗?

什么是基础图形的解决方案,以绘制具有不同颜色的功能线?

plot r

11
推荐指数
2
解决办法
1万
查看次数

如何在R中将插槽的默认值设置为NULL?

我是R.的新手

我正在尝试定义一个类似于树节点的类,也就是说,它有一个左节点和右节点,它应该与父节点属于同一个类.所以我将类定义如下:

setClass('Node', representation=(left='Node',right='Node', ...))
Run Code Online (Sandbox Code Playgroud)

我想通过设置原型将Node的默认值设置为NULL,但R表示如下:

  invalid class "Node" object: invalid object for slot "left" in class "bicluster": got class "NULL", should be or extend class "Node"
Run Code Online (Sandbox Code Playgroud)

但是如果我没有将默认值speficy为NULL,那么默认值将是深度为4的递归节点,我认为这是浪费资源.

我的考虑是不必要的还是有更好的方法来做到这一点?

r s4

11
推荐指数
2
解决办法
2027
查看次数

将文本添加到ggplot2中的刻面图上,日期位于X轴上

我是ggplot2的新手并且它很精彩,但我有一件事情有困难.

我画了一些跨越一年的时间序列.X轴来自类的变量Date.我已将该情节分面,因此我在具有独立y轴的列中有7个时间序列.该图的重点是比较每个面与顶面的相关性.

我想做的最后一件事是在每个方面的右上角添加文本(每个方面与第一个方面之间的估计的皮尔逊相关性).

这被证明是非常困难的,因为geom_text()每个文本位需要x和y坐标.当X轴为日期且每个面的Y轴不同时,如何指定坐标?这是一些示例数据和我到目前为止的代码,所以你可以重现我到目前为止:

library(ggplot2)

date <- rep(as.Date(1:365,origin='2011-1-1'),7)
location <- factor(rep(1:7,365))
product <- rep(letters[1:7], each=365)
value <- c(sample(1:10, size=365, replace=T),sample(1:3, size=365, replace=T),
           sample(10:100, size=365, replace=T), sample(1:50, size=365, replace=T),
           sample(1:20, size=365, replace=T),sample(50:100, size=365, replace=T),
           sample(1:100, size=365, replace=T))
dat<-data.frame(date,location,product,value)

qplot(date, value, data=dat, geom="line", color=location, group=location, 
      main='Time Series Comparison', xlab='Month (2011)',ylab='Value') + 
        facet_grid(product ~ ., scale = "free_y")
Run Code Online (Sandbox Code Playgroud)

text r time-series ggplot2

11
推荐指数
1
解决办法
3458
查看次数