我的ggplot上有两个传说,有两个不同的图例标题(自动创建ggplot()
).现在,我想改变这个传奇的标题. + labs(colour = "legend name")
只更改第二个图例标题.我怎么能改变第一个呢?
样本数据:
dataset <- structure(list(date = structure(c(1264572000, 1266202800, 1277362800),
class = c("POSIXt", "POSIXct"), tzone = ""),
x1 = c(-0.00183760994446658, 0.00089738603087497, 0.000423513598318936),
x2 = c("approach x","approach y","approach z"),
x3 = c("Type1", "Type1", "Type2")) ,
.Names = c("date", "data","code","type"),
row.names = c("1", "2", "3"), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)
这是我制作情节的代码:
p <- ggplot(dataset, aes(x=date, y=data)) +
geom_point(aes(shape = factor(type), color = code)) +
scale_shape_manual(value=c(23,15))
print(p)
Run Code Online (Sandbox Code Playgroud)
图例标题默认为:"factor(type)"和"code":
如何在R数据帧上执行分析函数,如Oracle ROW_NUMBER(),RANK()或DENSE_RANK()函数(请参阅http://www.orafaq.com/node/55)?CRAN包"plyr"非常接近,但仍然不同.
我同意每个功能的功能可以以特别的方式实现.但我主要担心的是表现.为了记忆和速度,最好避免使用连接或索引访问.
我试图用DT::datatable
R输出一个格式良好的交互式表格.
...唯一的问题是我想要一个heroku工作为我编织文档,并且我已经了解了RStudio并且rmarkdown::render()
在引擎盖下使用了pandoc - 但是pandoc并没有在剥离的R Buildpack中用于heroku.
有没有办法让旧的降价引擎(knitr:knit2html
或markdown:markdownToHTML
)传递强大的javascript datatable
?或者更确切地说,在不使用pandoc的情况下生成下面的样本表?
这是一个最小的例子:
testing.Rmd
---
title: "testing"
output: html_document
---
this is a datatable table
```{r test2, echo=FALSE}
library(DT)
DT::datatable(
iris,
rownames = FALSE,
options = list(pageLength = 12, dom = 'tip')
)
```
this is regular R output
```{r}
head(iris)
```
Run Code Online (Sandbox Code Playgroud)
knit_test.R
require(knitr)
knitr::knit2html('testing.Rmd')
Run Code Online (Sandbox Code Playgroud)
产生:
this is a datatable table <!–html_preserve–>
<!–/html_preserve–>
this is regular R output
head(iris)
## …
Run Code Online (Sandbox Code Playgroud) 我使用RODBC库将数据导入R.我有一个很长的查询,我想传递一个变量,就像这个 SO用户.
问题是R将我的查询中的空格/回车符解释为换行符'\n'
.
这个问题的公认解决方案建议简单地将文本拆分成块然后paste()
一起 - 这是有效的,但理想情况下我想保持空白不变 - 这样可以更容易地在数据库中测试/验证查询的行为在粘贴到R之前
在其他语言中,我很熟悉有一个简单的行继续符 - 实际上,对接受的答案的一些评论正在寻找类似于python的方法\
.
我发现strwrap
在R讨论列表的内容中使用深入的解决方法,所以为了使互联网更好,我将在此处发布.但是,如果有人能指出更优雅/直接的解决方案,我将很乐意接受你的回答.
我无法弄清楚为什么我的RMySQL软件包无法安装 - 这就是我得到的:
> install.packages('RMySQL',type='source')
trying URL 'http://cran.mirrors.hoobly.com/src/contrib/RMySQL_0.7-5.tar.gz'
Content type 'application/x-gzip' length 160769 bytes (157 Kb)
opened URL
downloaded 157 Kb
* installing *source* package 'RMySQL' ...
ERROR: configuration failed for package 'RMySQL'
* removing 'C:/PROGRA~1/R/R-212~1.0/library/RMySQL'
The downloaded packages are in '(foo)'
Warning message:
In install.packages("RMySQL", type = "source") : installation of package 'RMySQL' had non-zero exit status
Run Code Online (Sandbox Code Playgroud)
我不认为这是MySQL安装的问题,因为正确的值似乎在注册表中:
> Sys.getenv('MYSQL_HOME')
MYSQL_HOME "C:/PROGRA~1/MySQL/MYSQLS~1.1/"
> readRegistry("SOFTWARE\\MySQL AB", hive="HLM", maxdepth=2)
$`MySQL Server 5.1`
$`MySQL Server 5.1`$DataLocation
[1] "C:\\Documents and Settings\\All Users\\Application Data\\MySQL\\MySQL …
Run Code Online (Sandbox Code Playgroud) 希望有人可以帮助我理解为什么错误的\n字符出现在我在R中创建的字符串向量中.
尝试导入并清理固定宽度格式的非常宽的数据文件(http://www.state.nj.us/education/schools/achievement/2012/njask6/,'Text file for data runs').遵循加州大学洛杉矶分校关于使用read.fwf和这个优秀的SO问题的教程,在导入后给出列名.
因为文件非常宽,所以列标题很长 - 所有这些都在一起,不到29,800个字符.我将它们作为简单的字符串向量传递:
column_names <- c(...)
Run Code Online (Sandbox Code Playgroud)
我会把这个丑陋的垃圾扔给你,但是我把整个东西放在了pastebin上.
当我注意到我的一些子集返回0行时,正在清理和转换一些变量以进行分析.在困惑之后(我拼错了什么?)它意识到我的列标题中已经引入了一堆'\n'换行符.
如果我遍历我创建的column_names向量
for (i in 1:length(column_names)) {
print(column_names[i])
}
Run Code Online (Sandbox Code Playgroud)
我看到第81行中间的第一个换行符 -
特殊科学编号登记科学
我尝试解决这个问题的途径:
1)这是关于我的环境的吗?我正在使用R中的常规脚本编辑器,我的线条会换行- 但是我的屏幕上的断点与\n字符的位置不匹配,这对我来说表明它不是R脚本编辑器.
2)是否有GUI设置?做了一些搜索,却找不到任何东西.
3)有模式吗?似乎换行字符大约每4000个字符插入一次.对R/S原语进行了一些阅读以试图弄清楚这是否与基本的R数据结构有关,但很快就在我脑海中.
我尝试将长串分解成更短的块,然后将它们组合起来,这似乎解决了这个问题.
column_names.1 <- c(...)
column_names.2 <- c(...)
column_names_combined <- c(column_names.1, column_names.2)
Run Code Online (Sandbox Code Playgroud)
所以我有一个即时的解决方法,但很想知道这里发生了什么.
一些与字符向量问题有关的帖子建议我运行内存配置文件:
memory.profile()
NULL symbol pairlist closure environment promise
1 9572 220717 4734 1379 5764
language special builtin char logical integer
63932 …
Run Code Online (Sandbox Code Playgroud) 我有一个自定义的包summary()
,print()
对于具有特定类对象的方法.这个软件包还使用了很棒dplyr
的数据包进行操作 - 我希望我的用户能够编写同时使用我的软件包和dplyr的脚本.
其他人在这里和这里注意到的一个障碍是dplyr动词不保留自定义类 - 这意味着ungroup
命令可以剥离我的自定义类的data.frames,从而搞乱方法调度summary
等.
Hadley说"正确执行此操作取决于您 - 您需要为每个dplyr方法定义一个方法,以便正确恢复所有类和属性"并且我正在尝试接受建议 - 但我无法弄清楚如何正确包装dplyr动词.
这是一个简单的玩具示例.假设我已经定义了一个cars
类,我有一个自定义summary
.
library(tidyverse)
class(mtcars) <- c('cars', class(mtcars))
summary.cars <- function(x, ...) {
#gather some summary stats
df_dim <- dim(x)
quantile_sum <- map(mtcars, quantile)
cat("A cars object with:\n")
cat(df_dim[[1]], 'rows and ', df_dim[[2]], 'columns.\n')
print(quantile_sum)
}
summary(mtcars)
Run Code Online (Sandbox Code Playgroud)
small_cars <- mtcars %>% filter(cyl < 6)
summary(small_cars)
class(small_cars)
Run Code Online (Sandbox Code Playgroud)
那个summary
调用small_cars …
我是XPath的新手 - 请放轻松我.
无法在目标页面上为不具有大量结构的元素提取XPath.
我已经想出如何拉出带有summary
标签的表格:
url <- paste("http://education.state.nj.us/rc/rc11/rcreport.php?c=",
all_sch[i,1],";d=",all_sch[i,2],";s=",all_sch[i,3],sep = '')
doc = htmlParse(url)
admin_salaries = getNodeSet(doc, '//table[@summary="Administrative Salaries and Benefits"]')
Run Code Online (Sandbox Code Playgroud)
但是在没有很多额外识别信息可以解决的情况下遇到麻烦.
例如,具有学校名称和分区的表格如下所示:
<table cellpadding="0" cellspacing="0">
<tr>
<td><strong>SCHOOL:</strong></td>
<td> New Jersey Ave</td>
</tr>
<tr>
<td><strong>COUNTY:</strong></td>
<td> Atlantic</td>
</tr>
<tr>
<td><strong>DISTRICT:</strong></td>
<td> Atlantic City</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
我的策略是"找到表格并拥有文本的节点 COUNTY
尽可能多地阅读关于XPath的内容,我正在尝试这样做:
names = getNodeSet(doc,'//table and //*[contains(text(),"COUNTY")]')
Run Code Online (Sandbox Code Playgroud)
但它不是返回表节点,而是给我一个布尔TRUE
值.
所以,问题是:我如何使用XPath查找具有COUNTY和SCHOOL文本的表?
我已经尝试了很多其他策略,但收效甚微.其他人建议的一种方法就是使用以下方法提取每个表数据单元:
xpathApply( htmlTreeParse(url, useInt=T), "//td", function(x) xmlValue(x))
Run Code Online (Sandbox Code Playgroud)
但是模板对于缺失数据并不一致 - 不完整的报告具有完全不同的结构,并且元素在2,000多个页面中的位置不同.
任何帮助是极大的赞赏!