小编use*_*650的帖子

如何在R(循环)中向列表添加元素

我想在循环中向列表添加元素(我不确切知道多少)

像这样:

l <- list();
while(...)
   l <- new_element(...);
Run Code Online (Sandbox Code Playgroud)

最后,l[1]将是我的第一个元素,l[2]我的第二个元素,依此类推.

你知道怎么办吗?

r

93
推荐指数
2
解决办法
30万
查看次数

ggplot geom_text字体大小控件

我尝试通过执行以下操作将字体更改为10为我的条形图的标签ggplot2:

ggplot(data=file,aes(x=V1,y=V3,fill=V2)) +
    geom_bar(stat="identity",position="dodge",colour="white") + 
    geom_text(aes(label=V2),position=position_dodge(width=0.9),
                                                 hjust=1.5,colour="white") +
    theme_bw()+theme(element_text(size=10))

ggsave(filename="barplot.pdf",width=4,height=4)
Run Code Online (Sandbox Code Playgroud)

但是生成的图像具有超大字体大小的条形图标签.

然后我想到geom_text()用这个修改:

geom_text(size=10,aes(label=V2),position=position_dodge(width=0.9),
                                                   hjust=1.5,colour="white")
Run Code Online (Sandbox Code Playgroud)

标签字体更大......

我可以将内部的大小更改为geom_text3,现在看起来像字体10,类似于轴标签.

我想知道发生了什么事?确实theme(text=element_text(size=10))并不适用于标签?

为什么10英寸的尺寸geom_text()不同于theme(text=element_text())

r ggplot2

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

安装适用于Linux的R包时出错

我试图在R 3.3上安装名为"rgeos"的软件包,但是当我输入时

install.packages("rgeos")
Run Code Online (Sandbox Code Playgroud)

但它返回以下错误(与其他包相同,但不是所有包):

> * installing *source* package ‘rgeos’ ...
** package ‘rgeos’ successfully unpacked and MD5 sums checked
configure: CC: gcc
configure: CXX: g++
configure: rgeos: 0.3-19
checking for /usr/bin/svnversion... no
configure: svn revision: 524
checking for geos-config... no
no
configure: error: geos-config not found or not executable.
ERROR: configuration failed for package ‘rgeos’
* removing ‘/home/kdg/R/x86_64-pc-linux-gnu-library/3.3/rgeos’
> 
> The downloaded source packages are in
>   ‘/tmp/Rtmpsa5pDo/downloaded_packages’ Warning message: In
> install.packages("rgeos") :   installation of package ‘rgeos’ had …
Run Code Online (Sandbox Code Playgroud)

linux packages r

23
推荐指数
1
解决办法
8343
查看次数

如何通过DiagrammeR在美人鱼(甘特)中获得超过4种颜色?

我必须每天生成一个甘特图.我的想法是使用R的DiagrammeR包中包含的美人鱼api.

我的数据总是具有相同的结构,因此,我创建了一个非常原始的解析器,它包含在可重现的示例中.

我面临的问题是,在4个部分后,样式从零开始:

rect.section.section0
rect.section.section1
rect.section.section2
rect.section.section3
rect.section.section0
Run Code Online (Sandbox Code Playgroud)

我可以改变rect.section.sectionx.css的颜色,但我不能添加新颜色.

有没有办法改变/个性化该部分的颜色/样式?

我可R重复的例子:

library(DiagrammeR)
library(htmltools)

fromdftogantt<-function(df,Title="Proba",filename="proba.html"){
  txt<-paste("gantt","dateFormat  YYYY-MM-DD",paste("title",Title),"",sep="\n")
  for(i in unique(df$section)){
    txt<-paste(txt,paste("section",i),sep="\n")
    for(j in which(df$section==i)){

      txt<-paste(txt,paste0(df$name[j],":",df$status[j],",",
                            df$fecini[j],",",
                            df$fecfin[j]),sep="\n")
    }
    txt<-paste0(txt,"\n")
  }
  m<-mermaid(txt)
  m$x$config = list(ganttConfig = list(
    axisFormatter = list(list(
      "%m-%Y" 
      ,htmlwidgets::JS(
        'function(d){ return d.getDate() == 1 }' 
      )
    ))
  ))
  save_html(as.tags(m),file=filename)
}

df<-data.frame(section=letters[1:6],name=paste("Name",1:6),
               status=rep("active",6),
               fecini=as.Date(c("2015-02-03","2015-03-05","2015-04-07",
                                "2015-02-03","2015-03-05","2015-04-07")),
               fecfin=as.Date(c("2015-06-01","2015-04-30","2015-12-31",
                                "2015-06-01","2015-04-30","2015-12-31")),
               stringsAsFactors = FALSE)

fromdftogantt(df,Title="Proba",filename="proba.html")
Run Code Online (Sandbox Code Playgroud)

r mermaid diagrammer

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

如何在染色体图形上绘制位置

我想生成一个图,描绘我工作的有机体的14个线性染色体,用于在每条染色体上的特定位置用彩色条进行扩展.理想情况下,我想使用R,因为这是我遇到的唯一编程语言.

我已经探索了各种方法,例如使用GenomeGraphs,但我发现这比我想要的更复杂/显示比我所拥有的更多的数据(例如显示细胞质带)并且通常特异于人类染色体.

我基本上想要的是14个以下尺寸的灰色条:

chromosome           size
         1         640851
         2         947102
         3        1067971
         4        1200490
         5        1343557
         6        1418242
         7        1445207
         8        1472805
         9        1541735
        10        1687656
        11        2038340
        12        2271494
        13        2925236
        14        3291936
Run Code Online (Sandbox Code Playgroud)

然后用彩色标记描绘沿染色体长度散布的约150个位置.例如这些位置的标记:

Chromosome        Position
         3          817702
        12         1556936
        13         1131566
Run Code Online (Sandbox Code Playgroud)

理想情况下,我还希望能够根据基因座指定几种不同的颜色,例如

Chromosome        Position        Type
         3          817702           A
        12         1556936           A
        13         1131566           A
         5         1041685           B
        11          488717           B
        14         1776463           B
Run Code Online (Sandbox Code Playgroud)

例如,"A"标记为蓝色,"B"标记为绿色.

在该图像中粘贴了与我想要产生的非常相似的图(来自Bopp等人,PlOS Genetics 2013; 9(2):e1003293):

示例染色体图

任何人都可以推荐一种方法吗?它不一定必须是生物信息学包,如果有另一种方法我可以使用R生成14条特定比例尺寸的条,在条形图上的指定位置有标记.例如,我一直在考虑从ggplot2修改一个简单的条形图,但我不知道如何在特定位置沿着条形图标记.

plot r bioinformatics genetics

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

如何在ggplot中遮蔽部分密度曲线(没有y轴数据)

我正在尝试使用1000之间的一组随机数在R中创建密度曲线,并将小于或等于某个值的部分着色.有很多解决方案涉及geom_areageom_ribbon,但它们都需要一个yval,我没有(它只是1000个数字的向量).有关如何做到这一点的任何想法?

另外两个相关问题:

  1. 是否有可能对累积密度函数(我目前正在使用stat_ecdf它生成一个)做同样的事情,或者根本不用它?
  2. 有没有办法编辑geom_vline所以它只会达到密度曲线的高度,而不是整个y轴?

代码:( geom_area尝试编辑我发现的一些代码是失败的.如果我ymax手动设置,我只需要一个列占据整个图,而不仅仅是曲线下面的区域)

set.seed(100)

amount_spent <- rnorm(1000,500,150)
amount_spent1<- data.frame(amount_spent)
rand1 <- runif(1,0,1000)
amount_spent1$pdf <- dnorm(amount_spent1$amount_spent)

mean1 <- mean(amount_spent1$amount_spent)

#density/bell curve
ggplot(amount_spent1,aes(amount_spent)) +
   geom_density( size=1.05, color="gray64", alpha=.5, fill="gray77") +
   geom_vline(xintercept=mean1, alpha=.7, linetype="dashed", size=1.1, color="cadetblue4")+
   geom_vline(xintercept=rand1, alpha=.7, linetype="dashed",size=1.1, color="red3")+
   geom_area(mapping=aes(ifelse(amount_spent1$amount_spent > rand1,amount_spent1$amount_spent,0)), ymin=0, ymax=.03,fill="red",alpha=.3)+
   ylab("")+ 
   xlab("Amount spent on lobbying (in Millions USD)")+
   scale_x_continuous(breaks=seq(0,1000,100))
Run Code Online (Sandbox Code Playgroud)

r ggplot2 density-plot

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

使用Rgraphviz中的`pos`参数来修复节点位置

基于这个问题当它与另一个重叠时自动弯曲一个弧,我试图pos在一个RGraphviz图中设置该属性.

有人可以展示如何正确使用该pos属性或建议更强大的解决方法.谢谢.

为了与上述链接问题保持一致,以下示例从bnlearn包含网格布局中的节点的图形开始.

library(bnlearn)
library(Rgraphviz)
library(igraph)

# Create graph
adj <- matrix(0L, ncol = 9, nrow = 9, dimnames = list(LETTERS[1:9], LETTERS[1:9]))
adj[upper.tri(adj)] <- 1
e <- empty.graph(LETTERS[1:9])
amat(e) <- adj
g <- as.graphNEL(e)

# layout in grid
ig <- igraph.from.graphNEL(g)
lay <- layout.grid(ig)
lay <- setNames(data.frame(norm_coords(lay, -100, 100, -100, 100)), c("x", "y"))
Run Code Online (Sandbox Code Playgroud)

帮助页面?GraphvizAttributes表明pos应该设置为

节点的位置(对于neato布局,这是节点的初始位置).使用概念val指定val,其中每个val是double.

更进一步,neato只有属性

pin:如果TRUE且节点在输入上有pos属性,则neato会阻止节点从输入位置移动.此属性的默认值为FALSE.

我找不到应用此参数的正确方法.

我试过的各种事情没有成功

# Passed named list …
Run Code Online (Sandbox Code Playgroud)

r graph graphviz r-graphviz

12
推荐指数
0
解决办法
360
查看次数

如何更有效地计算滚动协方差

我试图在R中计算一组数据(我的x变量的每一列)和另一个(y变量)之间的滚动协方差.我想我可以使用其中一个应用函数,但是找不到如何滚动两个同时设置输入.这是我尝试过的:

 set.seed(1)
 x<-matrix(rnorm(500),nrow=100,ncol=5)
 y<-rnorm(100)
 rollapply(x,width=5,FUN= function(x) {cov(x,y)})
 z<-cbind(x,y)
 rollapply(z,width=5, FUN=function(x){cov(z,z[,6])})
Run Code Online (Sandbox Code Playgroud)

但没有人做我想做的事.我找到的一个解决方案是使用for循环,但想知道我是否可以在R中更高效:

dResult<-matrix(nrow=96,ncol=5)
for(iLine in 1:96){
    for(iCol in 1:5){
        dResult[iLine,iCol]=cov(x[iLine:(iLine+4),iCol],y[iLine:(iLine+4)])
    }
}
Run Code Online (Sandbox Code Playgroud)

这给了我预期的结果:

head(dResult)


           [,1]       [,2]        [,3]        [,4]        [,5]
[1,]  0.32056460 0.05281386 -1.13283586 -0.01741274 -0.01464430
[2,] -0.03246014 0.78631603 -0.34309778  0.29919297 -0.22243572
[3,] -0.16239479 0.56372428 -0.27476604  0.39007645  0.05461355
[4,] -0.56764687 0.09847672  0.11204244  0.78044096 -0.01980684
[5,] -0.43081539 0.01904417  0.01282632  0.35550327  0.31062580
[6,] -0.28890607 0.03967327  0.58307743  0.15055881  0.60704533
Run Code Online (Sandbox Code Playgroud)

r covariance rollapply

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

R:ggplot2:facet_grid:如何在少数(不是全部)标签中包含数学表达式?

我遇到了困难ggplot2.我阅读了大部分相关帖子,尝试了一些但没有找到任何真正的解决方案.

我想在我的标签数学表达式facet_gridsggplot2.

  • 在原始文件中,我不能写名称μg.L-1
  • 在标题和轴中我可以做到,例如 qplot(day, activity, data=a) +xlab(expression("100 µg "*.L^"-1"*""))::这很好用.
  • 我该如何处理facet_labels?我可以设置级别并重命名标签因子,但不考虑表达式,例如:

    levels(a$group) <- c("control", expression("100 µg "*.L^"-1"*""))

    qplot(…, facets=~group)

结果:

方面1的标签写在图表上:控制

方面2的标签写在图表上:"100μg" .L ^" - 1" ""......

我不希望这样.

我不想使用,facet_grid(.~group, labeller=label_bquote(…))因为我不希望我的所有标签都遵循相同的表达方式.我想手动逐个编辑标签...我尝试用bquote(…)而不是expression(…)但同样的坏结果发生了

有人对此有任何线索吗?


一个例子:我定义了一个数据帧:

activity<- as.numeric(c("44","41","48","43","42","45","44","39", "47", "68", "88", "57"))
group<-c("first","first","first","first","first","first",
         "second","second","second","second","second","second")
day<- c("0", "0", "0", "20","20", "20","0", "0", "0", "20","20", "20" )
a<-data.frame(activity, group, day)
Run Code Online (Sandbox Code Playgroud)

我的情节:

require (ggplot2) 
Run Code Online (Sandbox Code Playgroud)

qplot(day, activity, facets=.~group, data=a, ylim=c(25,90))

在此输入图像描述

我想更改构面标签和y轴的名称:

levels(a$group)<- c("control", …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 facet-grid

10
推荐指数
2
解决办法
4380
查看次数

gridExtra包中的grid.table和tableGrob

我正在尝试使用gridExtra包格式化表.gridExtra我的包是2.0和R版本是3.2.1

我在stackoverflow上找到关于格式化的答案,建议的选项似乎只适用于旧版本的软件包.例如,

grid.table(data, h.even.alpha = 1, h.odd.alpha = 0, 
           v.even.alpha = 1, v.odd.alpha = 1, 
           gpar.corefill, gpar.coretext) 
Run Code Online (Sandbox Code Playgroud)

所有这些选项在最新版本中显示为"未使用的参数".

进一步搜索,我发现在新的gridExtra包中,格式化可能在主题内定义,例如 -

tt <- ttheme_default(core=list(fg_params=list(hjust=1, x=0.95)), 
                     colhead=list(fg_params=list(col="brown"))
Run Code Online (Sandbox Code Playgroud)

然后做

grid.table(data, theme=tt). 
Run Code Online (Sandbox Code Playgroud)

我找不到的是如何定义主题中的这些选项以及现在可以完成旧版本中可能的所有格式化.

特别是,我希望做到 -

  1. 列的左对齐
  2. big.marks的逗号(10000为10,000)
  3. 偶数行和奇数行的不同行颜色
  4. 列标题颜色
  5. 不显示行名称(类似于row.names = FALSE)

r gridextra

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