小编eip*_*i10的帖子

重新排序因子会产生不同的结果,具体取决于加载的包

我想创建一个条形图,其中条形按高度排序,而不是按类别按字母顺序排列.当我加载的唯一包是ggplot2时,这工作正常.但是,当我加载一些包并运行创建,排序和绘制数据框的相同代码时,条形图已经恢复为按字母顺序排序.

我每次使用都检查了数据帧str(),结果发现数据框的属性现在不同了,即使我每次都运行相同的代码.

我的代码和输出如下所示.任何人都可以解释不同的行为吗?为什么加载一些显然不相关的包(在我所使用的所有函数似乎都没有被新加载的包掩盖的意义上无关)会改变运行transform()函数的结果?

案例1:刚加载ggplot2

library(ggplot2)

group = c("C","F","D","B","A","E")
num = c(12,11,7,7,2,1)
data = data.frame(group,num)
data1 = transform(data, group=reorder(group,-num))

> str(data1)
'data.frame':   6 obs. of  2 variables:
 $ group: Factor w/ 6 levels "C","F","B","D",..: 1 2 4 3 5 6
  ..- attr(*, "scores")= num [1:6(1d)] -2 -7 -12 -7 -1 -11
  .. ..- attr(*, "dimnames")=List of 1
  .. .. ..$ : chr  "A" "B" "C" "D" ...
 $ num  : num  12 11 7 7 2 1 …
Run Code Online (Sandbox Code Playgroud)

namespaces r masking operator-precedence

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

如何在R中的晶格图形中设置条带标签字体大小

我用三个面板创建了一个格子图.我可以控制轴的字体大小和刻度标签,但我还没弄清楚如何增加条带标签的字体大小.这是一个具体的例子:

# See below for the fake data to run this code
library(lattice)
barchart(choice ~ yes+no+not.app|group, data=data, 
         stack=TRUE, col=c("green","red","blue"), 
         xlim=c(0,100), layout=c(3,1),
         scales=list(cex=c(1.4,1.4), alternating=3),
         xlab=list(label="Percent of Respondents", fontsize=20), 
         main="")
Run Code Online (Sandbox Code Playgroud)

这是此代码生成的图表.请注意除了条带标签("组1","组2","组3")之外,所有字体都是好的和大的.我一直在寻找R-help和Stack Overflow,但是还没有能够解决这个问题.有谁知道神奇的咒语?

在此输入图像描述

data = structure(list(choice = c("Choice 1", "Choice 1", "Choice 1", 
"Choice 2", "Choice 2", "Choice 2", "Choice 3", "Choice 3", "Choice 3", 
"Choice 4", "Choice 4", "Choice 4"), group = c("Group 1", "Group 2", 
"Group 3", "Group 1", "Group 2", "Group 3", "Group 1", "Group 2", 
"Group 3", "Group 1", …
Run Code Online (Sandbox Code Playgroud)

graphics plot r lattice

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

更改gigimate框架标题的标签

gganimategg_animate()调用渲染动画序列时可以设置浏览选项,似乎没有选项可以更改帧标题,以使观察者更清楚框架所基于的参数是什么.

换句话说,假设frame = year在一个图层中:如何将框架的标题设置为year: ########是当前帧的年份?我错过了什么或是gganimate图书馆的限制吗?

您将如何通过变通方法获得相同的结果?谢谢你的建议.

animation r ggplot2 gganimate

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

寻求由ggplot 2.2.0破坏的gtable_add_grob代码的解决方法

在具有多个构面变量的图中,ggplot2重复"外部"变量的构面标签,而不是在"内部"变量的所有级别上具有单个跨越构面条带.我有一直在使用,以覆盖与使用单个跨越小面条重复外端面标签一些代码gtable_add_grobgtable包.

不幸的是,由于facet strip的grob结构发生了变化,此代码不再适用于ggplot2 2.2.0.具体来说,在ggplot2的早期版本中,facet标签的每一行都有自己的一组grob.但是,在版本2.2.0中,看起来每个facet标签的垂直堆栈都是单个grob.这打破了我的代码,我不知道如何解决它.

这是一个具体的例子,取自几个月前我回答的SO问题:

# Data
df = structure(list(location = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L), .Label = c("SF", "SS"), class = "factor"), species = structure(c(1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 grob gtable

16
推荐指数
2
解决办法
1428
查看次数

调整R中的图像大小

我正在尝试使用R中的一些图像数据,并且无法弄清楚如何调整图像的大小以确保它们的大小相同.

在Python中,我解决了这个问题如下:

from PIL import Image
import numpy as np

size = (100, 100)
img = Image.open(filename)
img = img.resize(size)
img = np.array(img.getdata())
Run Code Online (Sandbox Code Playgroud)

在R中,我无法找到能够完成同样事情的库.我能得到的最远的是:

library(jpeg)

img <- readJPEG(filename)
# Need something here to resize
img <- as.matrix(img)
Run Code Online (Sandbox Code Playgroud)

最简单的方法是像Pillow这样的库我可以打电话,但正如我所说,我似乎无法找到任何东西.

谢谢,

jpeg r image

14
推荐指数
4
解决办法
2万
查看次数

将持续时间绘制为带有ggplot2的行

最后几天,我正在思考以下问题:我想将活动的持续时间绘制为一条线,y轴表示活动发生的日期,x轴表示时间(小时).当我处理在同一天开始和结束的活动时,这很容易.

例如:

df1<-structure(list(Date = structure(c(16802, 16803, 16805, 16806, 
16809, 16810, 16812, 16813, 16816, 16820, 16821, 16822, 16829
), class = "Date"), hms1 = structure(c(1457623680, 1457620860, 
1457621160, 1457622540, 1457625600, 1457621280, 1457620380, 1457619720, 
1457623620, 1457621460, 1457620440, 1457617980, 1457621880), class =      c("POSIXct", "POSIXt"), tzone = ""), hms2 = structure(c(1457632500, 1457627640, 
1457628360, 1457629500, 1457631000, 1457625120, 1457625420, 1457624520, 
1457627640, 1457626800, 1457626800, 1457622060, 1457625540), class = c("POSIXct", 
"POSIXt"), tzone = "")), .Names = c("Date", "hms1", "hms2"), class =     "data.frame", row.names = c(103L, 105L, 108L, 110L, 114L, …
Run Code Online (Sandbox Code Playgroud)

datetime r date ggplot2

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

R中网络图的自定义线型

我希望沿着线的长度制作带有箭头(或类似的V形)的定向网络图...

在此输入图像描述

igraph库似乎使用了polygon接受的基本功能lty指定行类型,但这些仅限于各种破折号.

有没有办法制作自定义符号(甚至使用三角形 pch)在R中形成一条线?

制作图表的最小代码:

require(igraph)
gr = graph_from_literal( A -+ B -+ C )
plot(gr,edge.curved=TRUE)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果支持这个,我可以使用另一个网络分析库.我问开发商,ggraph他说不可能做到这一点.

r graph

14
推荐指数
2
解决办法
685
查看次数

如何格式化rmarkdown PDF输出的复杂表格

我有一张表,我想从rmarkdown文档中以PDF格式输出.但是,由于我有限的乳胶技能,我无法弄清楚如何获得跨越列,单元格边框和字体面,就像我希望它们使用xtable各种Latex添加方式一样.

我能够使用包中的FlexTable函数获得我想要的东西ReporteRs,但它看起来FlexTable只能用于rmarkdown生成html输出,但不能用于PDF输出.

所以,我正在寻找帮助格式化我的表使用xtable,或任何其他R包或(可能是自定义)R函数,可用于以编程方式为PDF输出创建合理复杂的表.此外,如果有一些方法可以FlexTable同时使用PDF输出,那也会很棒.

下面我创建一个表使用,FlexTable这样你就可以看到我的目标.接下来,我提供了一个示例rmarkdown文档,显示了我在使用时创建类似表的(有点蹩脚)努力中所处的位置xtable.

ReporteRs::FlexTable

首先,让我们创建将进入表格的数据:

library(ReporteRs)

x = structure(c(34L, 6L, 9L, 35L), .Dim = c(2L, 2L), .Dimnames = structure(list(
    Actual = c("Fail", "Pass"), Predicted = c("Fail", "Pass")), .Names = c("Actual", 
"Predicted")), class = "table")

x=cbind(x, prop.table(x), prop.table(x, 1), prop.table(x,2))
x[, -c(1,2)] = sapply(x[,-c(1,2)], function(i) paste0(sprintf("%1.1f", i*100),"%"))
x = cbind(Actual=rownames(x), x)
Run Code Online (Sandbox Code Playgroud)

现在为FlexTable创建和格式化:

# Set up …
Run Code Online (Sandbox Code Playgroud)

formatting latex r knitr r-markdown

13
推荐指数
2
解决办法
4422
查看次数

如何使用R自动化对Web搜索表单的多个请求

我想学习如何使用RCurl(或其他合适的R包,如果我错了RCurl是正确的工具)来自动在数据文件中提交的搜索字词,以网络的形式,并把搜索结果的过程.我正在处理的具体问题如下:

我有一个数据文件给出了几辆汽车的车牌号码(LPN)和车辆识别号码(VIN).汽车的加利福尼亚部门(DMV)有让您输入LPN和VIN的最后五位数字的网页搜索形式,它返回的车辆牌照费,2010年或2009年(VLF)支付(有一个选择在输入表格上也是如此).(仅供参考:这是一个研究项目,用于查看车辆制造,型号和型号年份的VLF支付分布情况)

我可以通过手动输入每辆车数据的繁琐过程,然后手动将结果输入电子表格.但这是21世纪,我想尝试自动化这个过程.我想编写一个脚本,将每个LPN和VIN提交到DMV Web表单,然后将结果(VLF支付)放入我的数据文件中的新VLF变量中,重复执行此操作直到它到达列表末尾LPN和VIN.(顺便说一句,DMV网络表格就在这里:https: //www.dmv.ca.gov/FeeCalculatorWeb/vlfForm.do).

我的计划是使用getHTMLFormDescription()(在RHTMLForms包),找出输入字段的名称,然后使用getForm()或postForm()(在RCurl包)来检索输出.不幸的是,我在第一步陷入困境.这是我使用的R命令和输出:

> forms = getHTMLFormDescription("https://www.dmv.ca.gov/FeeCalculatorWeb/vlfForm.do")
Error in htmlParse(url, ...) : 
  File https://www.dmv.ca.gov/FeeCalculatorWeb/vlfForm.do does not exist 
Run Code Online (Sandbox Code Playgroud)

不幸的是,对于R来说相对较新,而且几乎全新的HTTP和网络抓取,我不知道下一步该怎么做.

首先,有谁知道为什么我的getHTMLFormDescription()调用出错?或者,还有另一种方法可以找出输入字段的名称吗?

其次,您能否建议一些示例代码来帮助我开始实际提交LPN和VIN并检索输出?getForm()或postForm()是正确的方法还是我应该做其他事情?如果要提交一些真正的LPN-VIN组合会有所帮助,这里有三个:
LPN VIN
5MXH018
30135 4TOL562
74735 5CWR968 11802

最后,因为你可以看到我是一个完整的新手,你是否有我需要学习的建议,以便熟练掌握这种网络抓取以及如何去学习它(用R或另一种语言) )?对网站,书籍,列表服务器,其他StackOverflow问题等的具体建议会很棒.

谢谢你的帮助.

r web-scraping

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

如何用R创建时间螺旋图

有没有办法在R中绘制这样的图形并且在它上面有相同的12个轴?

这是图表的图片. 照片为图表

这是我的一个数据

        Date1  Time TravelTime
1  2016-09-04 13:11         34
2  2016-09-04 13:12         34
3  2016-09-04 13:13         33
4  2016-09-04 13:14         33
5  2016-09-04 13:15         33
6  2016-09-04 13:16         43
7  2016-09-04 13:17         44
8  2016-09-04 13:18         44
9  2016-09-04 13:19         40
10 2016-09-04 13:20         39
Run Code Online (Sandbox Code Playgroud)

这是dput的输出

structure(list(Date1 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L), .Label = "2016-09-04", class = "factor"), Time = structure(1:10, .Label = c("13:11", 
"13:12", "13:13", "13:14", "13:15", "13:16", "13:17", "13:18", 
"13:19", "13:20"), …
Run Code Online (Sandbox Code Playgroud)

datetime r ggplot2 lattice

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