小编Pav*_*ive的帖子

在ggplot的注释中显示固定的小数

我需要在注释中包含所有浮点数,ggplot以在小数点分隔符后显示3位数.但是我遇到了这个问题:

require(ggplot2)
data(iris)
a <- 1.8
b <- 0.9

ggplot(iris, aes(Sepal.Length, Petal.Length))+
   geom_point()+
   annotate("text", 7, 3, 
            label = paste0("y == ", format(a, digits = 3, nsmall = 3), " %*%z^", 
                           format(b, digits = 3, nsmall = 3)), parse = TRUE)
ggplot(iris, aes(Sepal.Length, Petal.Length))+
 geom_point()+
 annotate("text", 7, 3,
          label = sprintf("y == %0.3f %%*%%z^ %0.3f", a,b), parse = TRUE)
Run Code Online (Sandbox Code Playgroud)

都生成只有一位小数的图.很明显,如果我改为parse = FALSE,那么情节会带有正确的小数位数,但它的格式(很明显)远远超出预期的小数.

除了难以介绍文本外,还有哪些其他选项可以实现这一目标?

printf r annotate string-formatting ggplot2

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

我如何问一个很好的ggplot /点阵/基本图问题?

我已阅读如何使一个伟大的[R重复的例子,著名的线程,但有没有具体的建议如何提出一个伟大的ggplotlattice或基本情节重大R第

您建立出色范例的秘诀是什么?您应该包括或避免使用哪些信息?

您如何陈述预期的输出?建议的附件大小和格式是什么?

r r-faq

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

Python subprocess.call不等待命令执行

我是python的新手,我需要在课程中使用它.我在Freemat/octave/matlab .m文件中开发了解决方案(一种优化算法),并希望从Python调用它(python代码将由一个评分python脚本调用).

.m文件读取名为tmp.data的文件,并将输出写入output.txt.然后,python脚本应该从该输出中读取并将其转换为分级脚本所期望的结果.

所有运行都很好,除了我无法使Python等待对Matlab的调用完成,因此在以下行上生成错误.

这是代码:

#!/usr/bin/python
# -*- coding: utf-8 -*-

from collections import namedtuple
Item = namedtuple("Item", ['index', 'value', 'weight'])

import subprocess
import os
from subprocess import Popen, PIPE

def solve_it(input_data):
    # Modify this code to run your optimization algorithm

    # Write the inputData to a temporay file
    tmp_file_name = 'tmp.data'
    tmp_file = open(tmp_file_name, 'w')
    tmp_file.write(input_data)
    tmp_file.close()

    # call matlab (or any other solver)
    # subprocess.call('matlab -r gp(\'tmp.data\')', shell=1)
    # run=os.system
    # a=run('matlab -r gp(\'tmp.data\')')
    # process = Popen('matlab …
Run Code Online (Sandbox Code Playgroud)

python matlab popen python-2.7

0
推荐指数
1
解决办法
2751
查看次数

R计算data.table中的字段

我有一个数据表可以减少到这个:

set.seed(1); 
dt<-data.table(form=c(1,1,1,2,3,3,3,4,4,5),
    mx=c("a","b","c","d","e","f","g","e","g","b"),
    vr=runif(10,100,200),
    usr=c("l","l","l","m","o","o","o","l","l","m"),
    type=c("A","A","A","C","C","C","C","C","C","A"))
Run Code Online (Sandbox Code Playgroud)

我可以生成一个表格:

dt[,
    list(n.form=length(unique(form)),n.mx=length(unique(mx)),tot.vr=sum(vr)),
    by=usr]
Run Code Online (Sandbox Code Playgroud)

我无法计算的是A类公式的数量(每行是观察值,form是公式数).我试过了:

dt[,
    list(n.form=length(unique(form)),n.mx=length(unique(mx)),tot.vr=sum(vr),n.A=sum(type=="A"),
    by=usr]
Run Code Online (Sandbox Code Playgroud)

并且:

dt[,
    list(n.form=length(unique(form)),n.mx=length(unique(mx)),tot.vr=sum(vr),n.A=length(unique(type=="A"))),
    by=usr]
Run Code Online (Sandbox Code Playgroud)

但是没有一个考虑到发现的"A"数量需要与唯一的公式(form)数量相关的事实.

我想要的结果是:

   usr n.form n.mx   tot.vr n.A
1:   l      2    5 750.0398   1
2:   m      2    2 296.9994   1
3:   o      1    3 504.4747   0
Run Code Online (Sandbox Code Playgroud)

但我找不到实现它的方法.任何光棚都非常受欢迎.谢谢,

======= 编辑添加 ========

我想知道有多少公式(唯一数字dt$form)是"A"类型(因此我可以计算总公式中的一部分).直接数(sum)是类型A 的观察总数,而存在(any)给出了我是否至少有一个类型为"A" 的公式,而不是该类型的公式数(这是我想要的) ).请注意,任何给定的公式将始终为"A"或"C"类型(在一个公式中不是混合类型)

aggregate r data.table

0
推荐指数
1
解决办法
62
查看次数