小编Uso*_*obi的帖子

在ggplot2中创建密度直方图?

我想创建下一个直方图密度图ggplot2.以"正常"方式(基本包)非常简单:

set.seed(46)
vector <- rnorm(500)  
breaks <- quantile(vector,seq(0,1,by=0.1))
labels = 1:(length(breaks)-1)
den = density(vector)
hist(df$vector,
     breaks=breaks,
     col=rainbow(length(breaks)),
     probability=TRUE)
lines(den)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

到目前为止,我已经达到了ggplot:

seg <- cut(vector,breaks,
           labels=labels,
           include.lowest = TRUE, right = TRUE)
df = data.frame(vector=vector,seg=seg)

ggplot(df) + 
     geom_histogram(breaks=breaks,
                    aes(x=vector,
                        y=..density..,
                        fill=seg)) + 
     geom_density(aes(x=vector,
                      y=..density..))
Run Code Online (Sandbox Code Playgroud)

但是"y"尺度具有错误的尺寸.我注意到下一次运行得到了正确的"y".

 ggplot(df) + 
     geom_histogram(breaks=breaks,
                    aes(x=vector,
                    y=..density..,
                    fill=seg)) + 
     geom_density(aes(x=vector,
                      y=..density..))
Run Code Online (Sandbox Code Playgroud)

我只是不明白.y=..density..在那里,应该是高度.那么为什么我试图填充它时我的尺度会被修改?

我确实需要颜色.我只想要一个直方图,其中根据默认的ggplot填充颜色定向设置每个块的中断和颜色.

r colors histogram ggplot2 probability-density

23
推荐指数
2
解决办法
5万
查看次数

为什么match.call有用?

在一些R函数的主体中,例如lm我看到对match.call函数的调用.正如帮助页面所说,在函数内部使用时会match.call返回一个调用,其中指定了参数名称; 这对于将大量参数传递给另一个函数应该是有用的.

例如,在lm函数中我们看到对函数的调用model.frame

function (formula, data, subset, weights, na.action, method = "qr", 
model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE, 
contrasts = NULL, offset, ...) 
{
  cl <- match.call()
  mf <- match.call(expand.dots = FALSE)
  m <- match(c("formula", "data", "subset", "weights", "na.action", 
      "offset"), names(mf), 0L)
  mf <- mf[c(1L, m)]

  mf$drop.unused.levels <- TRUE
  mf[[1L]] <- quote(stats::model.frame)
  mf <- eval(mf, parent.frame())
  ...
Run Code Online (Sandbox Code Playgroud)

为什么这比直接调用model.frame指定参数名称更有用呢?

function (formula, …
Run Code Online (Sandbox Code Playgroud)

r call

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

在ggplot2直方图中设置中断

我需要制作几个关于相同矢量值和密度估计的直方图.所以下一个情节很好.

 values = rnorm(100)
 plot = ggplot(data.frame(val=values), aes(x=val)) + geom_histogram(aes(y = ..density..)) + geom_density()
Run Code Online (Sandbox Code Playgroud)

但是,我需要打印几个具有不同断点的图(不是一个带有不同面板的图),例如:

breaks = list(c(-1,0,1),c(-2,-1.5,0,1.5,2),c(-0.5,0,0.5))
Run Code Online (Sandbox Code Playgroud)

如何重新定义变量的中断plot

r ggplot2

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

具有数值向量的Levenshtein型算法

我有两个带数值的向量.如

v1 <- c(1, 3, 4, 5, 6, 7, 8)
v2 <- c(54, 23, 12, 53, 7, 8)
Run Code Online (Sandbox Code Playgroud)

我想计算插入,删除替换的数量,我需要将一个向量转换为另一个向量,每个操作分别具有一定的成本c1 c2c3.我知道基础包上的函数adist为字符串执行此操作,但我不知道与数字等效的函数.

我想用一个字母引用每个数字,但我有超过2000个唯一数字,所以如果有人知道如何在R中获得2000个不同的字符,这对我来说也是一个解决方案.

谢谢你的帮助.

r levenshtein-distance

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

Valgrind 显示内存泄漏,现在怎么办?R: C() 扩展

我编写了一个由 R 函数调用的外部 C 函数.C()。为了检查是否发生内存泄漏,我使用valgrindUbuntu 进行下一个调用。

R --debugger=valgrind --vanilla < Desktop/eraseme.R
Run Code Online (Sandbox Code Playgroud)

我没有收到任何错误。但我确实收到了内存泄漏的通知。

==16347== HEAP SUMMARY:
==16347==     in use at exit: 30,440,904 bytes in 13,097 blocks
==16347==   total heap usage: 29,644 allocs, 16,549 frees, 134,692,871 bytes allocated
==16347== 
==16347== LEAK SUMMARY:
==16347==    definitely lost: 120 bytes in 2 blocks
==16347==    indirectly lost: 480 bytes in 20 blocks
==16347==      possibly lost: 0 bytes in 0 blocks
==16347==    still reachable: 30,440,304 bytes in 13,075 blocks
==16347==         suppressed: 0 bytes …
Run Code Online (Sandbox Code Playgroud)

c memory-leaks r

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

用crontab(python)运行selenium

我有一个python脚本,通过selenium调用chrome与下一行.

 ff = webdriver.Chrome('/home/user01/webScraping/CollectAndGo/chromedriver')
Run Code Online (Sandbox Code Playgroud)

从shell脚本调用python脚本.

python /home/user01/webScraping/CollectAndGo/cgcom.py > /home/user01/webScraping/CollectAndGo/cgcom.log 2>&1
Run Code Online (Sandbox Code Playgroud)

当我从终端运行脚本或只是执行.sh文件时,它运行正常,但是当我安排crontab作业时,它会因下一个错误而失败.

   raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: u'unknown error: Chrome failed to start: exited abnormally\n  (Driver info: chromedriver=2.9.248304,platform=Linux 3.5.0-36-generic x86_64)' 
Run Code Online (Sandbox Code Playgroud)

该错误与此问题的第一行代码有关.有人知道为什么会发生这种情况吗?

python ubuntu selenium crontab

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

在R中创建一个依赖于data.table的包

我必须制作一个取决于包data.table的R包.但是,如果我要执行一个功能,例如包中的下一个功能

randomdt <- function(){
    dt <- data.table(random = rnorm(10))
    dt[dt$random > 0]
}
Run Code Online (Sandbox Code Playgroud)

函数[将使用data.frame的方法而不是data.table,因此错误

Error in `[.data.frame`(x, i) : undefined columns selected
Run Code Online (Sandbox Code Playgroud)

会出现.通常这可以通过使用get('[.data.table')或类似的方法(package::function最简单)解决,但似乎不起作用.毕竟,[是一个原始的功能,我不知道它的方法是如何工作的.

那么,如何[从我的包中调用data.table 函数呢?

r data.table

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

尝试除语法错误

我有下一个代码的问题.

try: 1+1
except Exception as exception: pass
1+1
try: 2+2
except Exception as exception: pass
Run Code Online (Sandbox Code Playgroud)

我在提示中得到的结果是

... ...   File "<stdin>", line 3
    1+1
    ^
SyntaxError: invalid syntax
>>> ... ... ... 4
Run Code Online (Sandbox Code Playgroud)

但是,下一个代码执行时没有错误.

try: 1+1
except Exception as exception: pass

try: 2+2
except Exception as exception: pass
Run Code Online (Sandbox Code Playgroud)

sys.version_info是:

sys.version_info(major=2, minor=7, micro=3, releaselevel='final', serial=0)
Run Code Online (Sandbox Code Playgroud)

为什么我会收到语法错误?

python try-catch

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

使用命名列表转换变量

在R编程语言中,我有一个命名列表,如下所示

list <- list(first='hello',second='bye')
Run Code Online (Sandbox Code Playgroud)

我想分别使用hellobye来转换变量firstsecond值.显然,真实列表比示例一长得多,我想知道是否有比在循环中使用函数更好的解决方案.assign

谢谢你的时间.

r variable-assignment assign

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