小编Jua*_*uan的帖子

摆脱那些灰色框上的facet_grid标签?

我想要的是删除右侧的标签,侧面的灰色框上的标签.我举个例子:

p <- ggplot(mtcars, aes(mpg, wt, col=factor(cyl))) + geom_point()
p + facet_grid(cyl ~ .)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

提前致谢!

胡安

plot label r facet ggplot2

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

在函数内部使用get lapply

这看起来似乎是一个过于复杂的问题,但它让我有点疯狂了一段时间.这也是为了好奇,因为我已经有办法做我需要的事情,所以并不重要.

在R中,我需要一个函数来返回一个带有所有参数和用户输入的值的命名列表对象.为此,我制作了这个代码(玩具示例):

foo <- function(a=1, b=5, h='coconut') {
    frm <- formals(foo)
    parms <- frm
    for (i in 1:length(frm))
        parms[[i]] <- get(names(frm)[i])
    return(parms)
}
Run Code Online (Sandbox Code Playgroud)

所以当被问到这个时:

> foo(b=0)

$a
[1] 1

$b
[1] 0

$h
[1] "coconut"
Run Code Online (Sandbox Code Playgroud)

这个结果很完美.问题是,当我尝试使用lapply相同的目标时,为了更高效(和优雅),它不能像我想要的那样工作:

foo <- function(a=1, b=5, h='coconut') {
    frm <- formals(foo)
    parms <- lapply(names(frm), get)
    names(parms) <- names(frm)
    return(parms)
}
Run Code Online (Sandbox Code Playgroud)

问题显然在于get评估它的第一个参数的环境(字符串,变量的名称).我部分地从错误消息中得知:

> foo(b=0)
Error in FUN(c("a", "b", "h")[[1L]], ...) : object 'a' not found
Run Code Online (Sandbox Code Playgroud)

而且,因为在.GlobalEnv环境中有正确名称的对象,foo会返回它们的值:

> a <- 100
> …
Run Code Online (Sandbox Code Playgroud)

r lapply

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

为什么write.csv和read.csv不一致?

问题很简单,请考虑以下示例:

m <- head(iris)
write.csv(m, file = 'm.csv')
m1 <- read.csv('m.csv')
Run Code Online (Sandbox Code Playgroud)

其结果是m1与原始对象的不同之处m在于它具有名为"X"的新的第一列.如果我真的想让它们相等,我必须使用其他参数,就像在这两个例子中一样:

write.csv(m, file = 'm.csv', row.names = FALSE)
# and then
m1 <- read.csv('m.csv')
Run Code Online (Sandbox Code Playgroud)

要么

write.csv(m, file = 'm.csv')
m1 <- read.csv('m.csv', row.names = 1)
Run Code Online (Sandbox Code Playgroud)

问题是,这种差异的原因是什么?特别是,为什么如果write.csv并且read.csv本来打算坚持Excel约定,那么不要导入首先导出的同一个对象?对我来说,这是一种非常反直觉的行为,非常不受欢迎.

(如果我使用这些函数的csv2变体,这个结果会完全相同)

提前致谢!


这些是data.frames m,m1如果您不想使用R来查看示例:

> m
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1 …
Run Code Online (Sandbox Code Playgroud)

import export r export-to-csv read.table

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

更改ggplot对象的数据集

我正在绘制我的数据的子集,我ggplot2想知道我是否会以某种方式使用ggplot原始数据子集中的对象中已包含的所有选项.举个例子,拿这是第一个图(代码块1):

require(ggplot2)
p <- ggplot(mtcars, aes(mpg, wt, color=factor(cyl))) + geom_point(shape=21, size=4)
print(p)
Run Code Online (Sandbox Code Playgroud)

现在我想用一个子集制作第二个图mtcars,所以我通常会这样做(代码块2):

new_data <- subset(mtcars, disp > 200)
p <- ggplot(new_data, aes(mpg, wt, color=factor(cyl))) + geom_point(shape=19, size=4)
print(p)
Run Code Online (Sandbox Code Playgroud)

为数据集中的这么小的差异再次编写所有代码似乎有点麻烦.通常在ggplot中,您可以更改一些参数(是正确的术语吗?),使用p; 例如,我可以改变绘图颜色p + scale_color_manual(values=rainbow(3)).当然,这只是一个愚蠢的例子,但当我有一个非常详细的情节时,它变得非常烦人,到处都有许多调整.

所以基本上,我想知道的是,如果有某种方式,比如一个函数x,我可以这样做:

p + x(data = new_data)
Run Code Online (Sandbox Code Playgroud)

并获得与代码块2相同的功能.

非常感谢,胡安

graphics plot r ggplot2

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

使用python在没有API的情况下抓取wunderground

我在抓取数据的世界中不是很有经验,所以这里的问题对某些人来说可能很明显。

我想要的是从 wunderground.com 抓取历史每日天气数据,而无需支付 API。也许这根本不可能。

我的方法是简单地使用requests.get整个文本并将其保存到一个文件中(下面的代码)。

结果不是获取可以从 Web 浏览器访问的表(见下图),而是一个包含除这些表之外几乎所有内容的文件。像这样的东西:

总结
无数据记录
每日观察
无数据记录

奇怪的是,如果我用 Firefox 保存为网页,结果取决于我是选择“网页,仅 HTML”还是“网页,完整”:后者包括我感兴趣的数据,前者没有。

有没有可能这是故意的,所以没有人抓取他们的数据?我只是想确保没有解决此问题的方法。

提前致谢,胡安

注意:我尝试使用user-agent字段无济于事。

# Note: I run > set PYTHONIOENCODING=utf-8 before executing python
import requests

# URL with wunderground weather information for a specific date:
date = '2019-03-12'
url = 'https://www.wunderground.com/history/daily/sd/khartoum/HSSS/date/' + date
r = requests.get(url)

# Write a file to check if the tables ar being retrieved:
with open('test.html', 'wb') as testfile:
    testfile.write(r.text.encode('utf-8'))
Run Code Online (Sandbox Code Playgroud)

我要抓取的表的屏幕截图。


更新:找到解决方案

由于将我指向 selenium 模块,它正是我需要的解决方案。该代码提取给定日期的 URL …

python wunderground web-scraping

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

WEKA:成本矩阵解释

我们如何解释WEKA的成本矩阵?如果我有2个类来预测(0级和1级)并且想要将0级的分类更多地作为1级(比如惩罚的两倍),那么矩阵格式究竟是什么?

是吗 :

 0 10
20  0
Run Code Online (Sandbox Code Playgroud)

或者是它

 0 20
10  0
Run Code Online (Sandbox Code Playgroud)

混淆的来源有以下两个参考:

1)Weka CostMatrix的JavaDoc说:

矩阵中位置i,j处的元素是将类j的实例分类为类i的惩罚.

2)然而,这篇文章中的答案似乎表明不是这样.

http://weka.8497.n7.nabble.com/cost-matrix-td5821.html

鉴于第一个成本矩阵,该帖子称"对0级实例进行错误分类会产生10的成本.对1级实例进行错误分类是成本的两倍.

谢谢.

weka

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

检查Github中是否有更新版本的本地文件,带R

简而言之:我需要在Github上托管的文件中获取上次更改的日期.

总之:鉴于在Github中我有一个文件(一个R工作区),偶尔更新一次,我想在R中创建一个函数来检查我的本地文件是否比回购中的文件旧(如果你"好奇,我的动机在这篇文章的末尾暴露出来了." 这是我正在谈论的文件.

原则上它应该有点简单,因为每个文件都有一个与之关联的历史页面,但是我的知识太差了,不知道如何处理它.此外,这个Q似乎暗示某种方式使用php做我想要的东西,但这对我来说真的是无法识别,所以我不知道它是否能以任何方式提供帮助.

所以,正如我在这篇文章的简短版本中所说,我需要找到一种方法来检索此文件的最后一次提交的日期.之后我可以找到一些方法将它与我本地文件的提交日期进行比较.

胡安先生,谢谢你

动机:我正在一个R基础知识的在线课程中工作,如果练习的解决方案是正确的(即:学生可以立即检查他们的结果),它使用一个系统进行自我检查.该系统使用具有定期更新的功能和数据的文件,因为我经常发现错误和新问题.所以我的目标是有一个功能告诉学生是否有更新的文件.找到一种下载它并替换旧版本的方法也很简洁,但现在是次要的.

git r github download

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