R

用RSelenium自动下载RStudio的cheatsheet

想下载rstudio这个页面的所有cheatSheet,虽然一个一个点也很快下完,不过最近在玩RSelenium,那么就试试让它来干这个事情吧(尽管有点大材小用)。 上码: hg_rs_server_selenium = function(filepath) { command = paste("java -jar", filepath) system(command,wait = FALSE, invisible = FALSE) } require(rvest) require(xml2) require(XML) require(tidyverse) require(RSelenium) hg_rs_server_selenium("c:/krupSoftware/bin/selenium-server-standalone-3.7.1.jar") remdr <- RSelenium::remoteDriver(browserName = "chrome") remdr$open() url = "https://www.rstudio.com/resources/cheatsheets/" remdr$navigate(url) psource = remdr$getPageSource() page = read_html(psource[[1]]) anodes = rvest::html_nodes(page, "a.fusion-button") links = xml2::xml_attr(anodes, "href") links = links[grepl("pdf$", links)] lapply(links, function(w) { remdr$navigate(w) }) remdr$close()

用R语言mailR包发邮件

用RSelenium包写了个自动登录图书馆网站的脚本,获取借书记录信息,提醒自己哪些书准备还,没想到写这个脚本的过程中,发现有一本书过期19天了,原来这本书藏在第二页,自己平时看还有那些书没还的时候,并没有留意是否还有第二页,看来写这个脚本还是有点用处。 现在想把处理好的信息自动发送到手机上,发邮件是最好的选择了,于是找到了一个R的扩展包mailR,这个包依赖rJava,所以要安装jdk或者jre,

RSelenium Chrome切换窗口

因为一直用的是firefox的浏览器,所以玩RSelenium的时候也是优先选择firefox,但是发现测试切换窗口的时候,总是切换不了,getFirefoxProfile也出现错误: profile = RSelenium::getFirefoxProfile("C:/Users/krup/AppData/Roaming/Mozilla/Firefox/Profiles/uew2kgfm.default", TRUE) Error in file(tmpfile, "rb") : cannot open the connection In addition: There were 14 warnings (use warnings() to see them) 貌似网上都是用chrome,于是尝试一下,切换窗口没有问题。 system("java -jar C:/krupSoftware/bin/selenium-server-standalone-3.13.0.jar",wait = FALSE, invisible = FALSE) require(RSelenium) #profile = RSelenium::getChromeProfile("C:/Users/krup/AppData/Local/Google/Chrome/User Data", "default") #remDr <- RSelenium::remoteDriver(browserName = "chrome", extraCapabilities = profile) remDr <- RSelenium::remoteDriver(browserName = "chrome") remDr$open() remDr$navigate("http://www.baidu.com") wins = remDr$getWindowHandles() remDr$executeScript("window.open('', '_blank', 'location=yes,height=800,width=800');", list("dummy")) wins = remDr$getWindowHandles() remDr$switchToWindow(wins[[length(wins)]]) remDr$getCurrentWindowHandle() remDr$executeScript("window.open('http://www.sogou.com', '_blank', 'toolbar=yes, location=yes, status=yes, menubar=yes, scrollbars=yes');", list("dummy")) remDr$navigate("http://www.bing.com") remDr$getCurrentWindowHandle() wins = remDr$getWindowHandles()

用R语言对矩阵单位正交化

用R语言写了个函数对矩阵单位正交化。 zj <- function(m) { a <- m b <- a * 0 b[,1] <- a[,1] tmp.sum <- a * 0 for(j in 2:ncol(a)) { tmp <- 0 for(k in 1:(j-1)) { temp <- sum(a[,j]*b[,k])/sum(b[,k]*b[,k])*b[,k] tmp <- tmp + temp } b[, j] <- a[, j] - tmp } b } m_col_unit <- function(m) { rst <- m*0 for(i in 1:ncol(m)){ for(j in 1:nrow(m)) { rst[j, i] <- m[j, i]/sqrt(sum(m[, i]*m[, i])) } } rst } zj_unit <- function(m) { m <- zj(m) m_col_unit(m) } # 验证 tt <- matrix(c(1,1,0, 1,0,1, 0,1,1), nrow = 3) zj(tt) ## [,1] [,2] [,3] ## [1,] 1 0.5 -0.6666667 ## [2,] 1 -0.5 0.6666667 ## [3,] 0 1.0 0.6666667 zj_unit(tt) ## [,1] [,2] [,3] ## [1,] 0.7071068 0.4082483 -0.5773503 ## [2,] 0.7071068 -0.4082483 0.5773503 ## [3,] 0.0000000 0.8164966 0.5773503 m <- matrix(c(1,0,-1,1, 1,-1,0,1, -1,1,1,0), nrow = 4) zj(m) ## [,1] [,2] [,3] ## [1,] 1 0.3333333 -0.2 ## [2,] 0 -1.0000000 0.6 ## [3,] -1 0.6666667 0.6 ## [4,] 1 0.3333333 0.8 zj_unit(m) ## [,1] [,2] [,3] ## [1,] 0.5773503 0.2581989 -0.1690309 ## [2,] 0.0000000 -0.7745967

R语言排列组合计算

R语言的排列组合计算。 列出排列数 gtools::permutations(5, 2) ## [,1] [,2] ## [1,] 1 2 ## [2,] 1 3 ## [3,] 1 4 ## [4,] 1 5 ## [5,] 2 1 ## [6,] 2 3 ## [7,] 2 4 ## [8,] 2 5 ## [9,] 3 1 ## [10,] 3 2 ## [11,] 3 4 ## [12,] 3 5 ## [13,] 4 1 ## [14,] 4 2 ## [15,] 4 3 ## [16,] 4 5 ## [17,] 5 1 ## [18,] 5 2 ## [19,] 5 3 ## [20,] 5 4 列出组合数 gtools::combinations(5, 2) ## [,1] [,2] ## [1,] 1 2 ## [2,] 1 3 ## [3,] 1 4 ## [4,] 1 5 ## [5,] 2 3 ## [6,] 2 4 ## [7,] 2 5 ## [8,] 3 4 ## [9,] 3 5 ## [10,] 4 5 t(combn(c("a", "b","c"), 2)) ## [,1] [,2] ## [1,] "a" "b" ## [2,] "a" "c" ## [3,] "b" "c" 计算出组合数 choose(5,2) ## [1] 10 计算出排列数 hg_p <- function(n, r) { choose(n,r)*factorial(r) } hg_p(5,2) ## [1] 20 combn(c("a", "b","c"), 2) ##

R语言扩展包的基本操作

加载扩展包 library(ggplot2) require(blogdown, quietly = TRUE) 取消加载扩展包 detach(name = "package:ggplot2") 删除已安装的扩展包 remove. packages(c("pkg1","pkg2") , lib = file .path("path", "to", "library")) 获取扩展包的帮助文档 help(package = "ggplot2")

把R语言的dplyr语句转化成sql语句

之前看到过一个可以将dplyr语句转化成sql语句的扩展包,搜索了一下,找到了,是dbplyr,看名字就知道它是什么家伙了。 把dplyr语句转化成sql语句 测试一下: library(DBI) library(RMariaDB) library(tidyverse) library(dbplyr) con <- dbConnect(RMariaDB::MariaDB(), dbname = "krupdb", port=3306, host = "db4free.net", user = "username", password = "password") df.log <- dbGetQuery(con, "select user, logdate from log") df.log$logdate <- as.Date(df.log$logdate) df.log %>% head # 需要把数据转化成mysql类型 df.log.sql <- dplyr::copy_to(con, df.log) class(df.log.sql) [1] "tbl_dbi" "tbl_sql" "tbl_lazy" "tbl" 试试生成新的列, df.log.sql %>% mutate(tmp = ifelse(logdate>"2018-04-10", 1, 0)) # Source: lazy query [?? x 3] # Database: mysql 8.0.11 # [heavenzone@db4free.net:/krupdb] user logdate tmp <chr> <date> <dbl> 1 bb1 2018-04-02 0. 2 bb1 2018-04-06 0. 3 bb1 2018-04-07 0. 4 bb2 2018-04-08 0. 5 ccc4 2018-04-09 0. 6 nn1 2018-04-09

nba历年球队比赛得分分布

其实现在很少真正去看nba比赛了,因为人称东艾西科南麦北卡的年代已经过去了,不过打开电脑还是不时的第一时间打开nba网页看看新闻,有种感觉就是看现在的比分,发现很多都是120+,130+的比分,就算是季后赛也如此,所以一直很想对比一下,究竟Jordan年代的比分是否跟现在有明显差别? 前段时间在统计之都看到有介绍叠嶂图,发现蛮好看,也在Y叔的订阅号看到画法,也不小心在这里得到一个关于nba的数据集,

R语言与线性代数

使用R语言对线性代数一些问题进行计算。 测试矩阵: m <- matrix(c(2,2:9), nrow = 3) m ## [,1] [,2] [,3] ## [1,] 2 4 7 ## [2,] 2 5 8 ## [3,] 3 6 9 m2 <- c(1:3) m2 ## [1] 1 2 3 矩阵乘以标量 m * 2 ## [,1] [,2] [,3] ## [1,] 4 8 14 ## [2,] 4 10 16 ## [3,] 6 12 18 求内积,即点积 即$A^TA$。 crossprod(m, m2) ## [,1] ## [1,] 15 ## [2,] 32 ## [3,] 50 crossprod(m2, m2) ## [,1] ## [1,] 14 a <- matrix( c( 1, 3, 2, 4 ), nrow=2 ) b <- matrix( c( 1, 0, -1, 1 ), nrow=2 ) crossprod(a, b) ## [,1] [,2] ## [1,] 1 2 ## [2,] 2 2 # 等价于 t(a) %*% b ## [,1] [,2] ## [1,] 1 2 ## [2,] 2 2 crossprod(a) ## [,1] [,2] ## [1,] 10 14 ## [2,] 14 20 求逆矩阵 solve(a) ## [,1] [,2] ## [1,] -2.0 1.0 ##

blogdown中Rmarkdown和Rmd不同扩展名不同作用

弄blogdown有一段时间,一直有两个疑问: 为什么Addins/New Post下方会有Rmd和Rmarkdown两个扩展名选择? 为什么Rmd文档生成的是html?而不生成md文档呢?(因为我一直都是只用Rmd扩展名,有短的为什么要用长的呢?我连探索这个都没有勇气吗?-_-!)html又在同目录下生成图片文件夹,这在一定程度上不是很美观, 我相信对于爱靓的@Yihui不可能容忍这种事情发生的! 带着这

data.table笔记

构建测试数据 examdf <- data.frame(id = c(1,2,3,4,5,6,7,8,9), name = c("Jordan", "Kobe", "T-Mac", "Duncan", "Garnet", "Iverson", "Dwade", "CP3", "Bird"), team = c("SG", "SG", "SF", "PF", "PF", "SG", "PG", "PG", "SF"), num = c(23, 24, 1, 21, 21, 3, 3, 3, 33 ), score = c(1, 2, 3, 4, 5, 6, 7, 8, 9), stringsAsFactors = FALSE) examdf ## id name team num score ## 1 1 Jordan SG 23 1 ## 2 2 Kobe SG 24 2 ## 3 3 T-Mac SF 1 3 ## 4 4 Duncan PF 21 4 ## 5 5 Garnet PF 21 5 ## 6 6 Iverson SG 3 6 ## 7 7 Dwade PG 3 7 ## 8 8 CP3 PG 3 8 ## 9 9 Bird SF 33 9 tidyverse、data.table、baseR对比实战 计算每个team的总score tidyverse examdf %>% dplyrExtras::s_group_by("team") %>% summarise(sum_score = sum(score)) ## # A tibble: 4 x 2 ## team sum_score ## <chr> <dbl> ## 1 PF 9. ##

一列含多分类的哑变量处理

问题描述 最近在天池找了个数据挖掘竞赛题目玩了一下,发现有一列数据形如:<分类1>;<分类2>,有一列是固定两个分类,有一个是有多个分类,而且是不定长的,固定长度的应该来说还是容易处理,不定长的就感觉有点难。我猜应该要把他们分离出来,然后再做哑变量处理,然后再做机器学习,于是到统计之都去问了一下,很快就得到了tctcab的回复,后来也到stackoverflow上面搜了一下,

filter one column max by group with data.table

目标 提取每个月最大日期的行。 数据结构 testdf <- data.frame(d = c("2017-01-01", "2017-01-30", "2017-02-02", "2017-02-10"), v = c("A", "B", "C", "D")) testdf$d <- as.Date(testdf$d) testdf$month <- lubridate::month(testdf$d) testdf ## d v month ## 1 2017-01-01 A 1 ## 2 2017-01-30 B 1 ## 3 2017-02-02 C 2 ## 4 2017-02-10 D 2 tidyverse testdf %>% group_by(month) %>% dplyr::filter(d == max(d)) ## # A tibble: 2 x 3 ## # Groups: month [2] ## d v month ## <date> <fct> <dbl> ## 1 2017-01-30 B 1. ## 2 2017-02-10 D 2. plyr::ddply plyr::ddply(testdf, "month", subset, d == max(d)) ## d v month ## 1 2017-01-30 B 1 ## 2 2017-02-10 D 2 data.table 方法一 setDT(testdf) testdf[, .SD[ d == max(d) ], by = month] ## month d v ## 1: 1 2017-01-30 B ## 2: 2 2017-02-10 D 方法二 据说这个更快。 testdf[ testdf[, .I[d == max(d)], by = month]$V1 ] ## d v month ## 1: 2017-01-30 B 1 ## 2: 2017-02-10 D 2 参考资料 https://stackoverflow.com/questions/16573995/subset-by-group-with-data-table

学做雷达图

数据 library(tidyverse) library(scales) library(showtext) showtext_auto() df <- data.frame(语文 = c(50, 60, 70, 90), 姓名 = c("A", "B", "C", "D"), 数学 = c(55, 60, 80, 90), 英语 = c(80, 60, 70, 77)) df ## 语文 姓名 数学 英语 ## 1 50 A 55 80 ## 2 60 B 60 60 ## 3 70 C 80 70 ## 4 90 D 90 77 用ggradar::ggradar()做雷达图 ggradar用的是ggplot2做图。 df.new <- df %>% mutate_if(is.numeric, rescale) %>% select(姓名, everything()) ggradar::ggradar(df.new) 用fmsb做雷达图 fmsb用的是基础做图。 fmsb_df <- function(df) { dfmax <- apply(df, 2, max) dfmin <- apply(df, 2, min) as.data.frame(rbind(dfmax, dfmin, df)) } df %>% select(-姓名) %>% fmsb_df() %>% fmsb::radarchart(seg =

using kableExtra in rticles ctex template

问题 kableExtra包是knitr::kable的一个非常好的扩展。不过用rticles的ctex模板调用了kableExtra::kable_styling 再生成pdf时发现出现下面这样的错误: kableExtra LaTeX Error: Unknown float option `H'. 解决方法 在rmd文件的同一目录下创建header.tex文件,输入以下内容: \usepackage{booktabs} \usepackage{longtable} \usepackage{array} \usepackage{multirow} \usepackage[table]{xcolor} \usepackage{wrapfig} \usepackage{float} \usepackage{colortbl} \usepackage{pdflscape} \usepackage{tabu} \usepackage{threeparttable} \usepackage[normalem]{ulem} 在rmd文档的front matter处引用header.tex: --- title: "Test kableExtra" author: "Alpha Dog" date: "`r Sys.Date()`" documentclass:

重装Win10后设置tinytex

今天重装了系统Win10,然后重装Rstudio,又安装tinytex,然后: tinytex::install_tinytex() 死活连接不上ctan下载那个zip文件,由于重装系统前已经把tinytex文件夹备份了,我想应该直接重新设置一下路径就可以了吧,于是把tinytex文件夹复制到了c:根目录,尝试: C:\tinytex\bin> .\win32\tlmgr path add 出现下面错误: Use of uninitialized value in bitwise or (|) at C:\tinytex\texmf-dist\scripts\texlive\tlmgr.pl line 1446. 最后尝试把texlive路径C:\tinytex\bin\win32添加到系统环境path,成

lightGBM安装成功

lightGBM的安装 环境 win10 R version 3.4.3 (2017-11-30) – “Kite-Eating Tree” Platform: x86_64-w64-mingw32/x64 (64-bit) Microsoft Visual Studio Community 2017 Microsoft Visual C++ 2017 (猜测需要) Visual Studio Tools for CMake (猜测需要) 在用VS打开\LightGBM\windows项目的时候,VS提示安装一些组件,不确定是哪些组件。 cmake 64bit Rtools 64bit 系统环境变量PATH C:\RBuildTools\3.4\bin C:\Program Files\CMake\bin C:\Program Files\R\R-3.4.3\bin 其实CMake和VS不知道是否二选一。 安装 方法一 library(devtools) options(devtools.install.args = "--no-multiarch") install_git("https://github.com/Microsoft/LightGBM", subdir = "R-package") 方法二 & 'C:\Program Files\R\R-3.4.3\bin\R.exe' CMD INSTALL --build . --no-multiarch 这样就直接安装好lightgbm包。另外也会在\LightGBM\R-pack

RMySQL使用方法以及中文乱码问题

连接MySql #install.packages("RMySQL") library(RMySQL) drv <- dbDriver("MySQL") con <- RMySQL::dbConnect(drv, dbname = "blog", host="127.0.0.1", port=3306, username="root", password="password") dbSendQuery(con,'SET NAMES utf8') res <- RMySQL::dbSendQuery(con,"show variables like 'character_set_%'") dbFetch(res) # 删除所有连接 # lapply(dbListConnections(dbDriver("MySQL")), dbDisconnect) # 查看所有连接 # dbListConnections(dbDriver("MySQL")) 把data.frame数据框数据写入MySql数据库 方法一 测试环境: mysql: 数据库默认编码为:utf8generalci 操作系统:win10 R: Sys.getlocale() Sys.getlocale() [1] "LC_COLLATE=Chinese (Simplified)_China.936;LC_CTYPE=Chinese (Simplified)_China.936;LC_MONETARY=Chinese (Simplified)_China.936;LC_NUMERIC=C;LC_TIME=Chinese (Simplified)_China.936" 这里自定义了一个函数hg_dbWriteTable用以处理在windows操作系统下写入mysql数据库时的中文问题。 该函数主要是处理编码的问题,

用R语言做线性规划求解

简介 本文将对《数据、模型与决策:基于Excel的建模和商务应用》这本书的第10章规划求解的题目使用R语言来进行线性规划求解。 用到了两个用于做线性规划求解的软件包,分别是:Rglpk、Rsymphony。 例题一:生产计划问题 在本例中,将使用Rglpk包来进行规划求解。 Rglpk简介 安装Rglpk install.packages("Rglpk") Rglpk用法 Rglpk_solve_LP((obj, mat, dir, rhs, bounds = NULL, types = NULL, max = FALSE,control = list(), ...)) 参数详解 参数 作用 obj 规划目标系数 mat 约束向量矩阵 dir 约束方向向量

R语言带三个点参数的函数怎么写

问题 在R里面很多函数中参数处都是显示三个点的,怎么写这样的函数呢? 看了很多R语言的书貌似都没有详细介绍这一个,终于今天去图书馆的时候看到有一本书简单介绍了一下这三个点的参数的应用,主要是在A函数中调用B函数,而B函数的参数又要通过A函数来传递。 例子一 funA <- function(a1 = 2, a2 = 2) { return(sum(a1, a2)) } funB <- function(b1 = 3, b2 = 3) { return(sum(b1, b2)) } funC <- function(c1, c2, ...) { tmp1 <- sum(c1, c2) print(tmp1) tmp2 <- funA(...) print(tmp2) rst <- tmp1 + tmp2 return(rst) } funX <- function(x1, x2, ...) { tmp1 <- sum(x1, x2) print(tmp1) tmp2 <- funA(...) print(tmp2) tmp3 <- funB(...) print(tmp3) rst <- tmp1 + tmp2 + tmp3 return(rst) } funC(4,4,2)

rmarkdown中使用python

目标 在Rstudio的rmarkdown中调用python并执行python代码。 使用方法 全局 ```{r setup} library(knitr) opts_chunk$set(engine.path = '/usr/bin/python3') ``` 局部chunk ```{python} import sys print(sys.version) ``` 指定python版本 ```{python, engine.path = '/usr/bin/python3'} import sys print(sys.version) ``` 参考链接 https://stackoverflow.com/questions/39069158/how-can-i-specify-rmarkdown-to-use-python3-instead-python-2 https://www.jianshu.com/p/05dc80e104c3 http://rpubs.com/badbye/python-knitr

another toc solution for blogdown fixing the pure Chinese issue

简介 本文记录为R语言软件包blogdown增加另外一个生成toc的方法,修改自网上的一段代码。 我也把它放到了github,有相同需求的朋友也可以拿去用。 问题描述 用blogdown自带的生成toc功能发现如果headline全部是中文,toc目录就没有生成链接,toc就不能跳转,rmd生成html_document的时候也是同样的问题【传送门】,yihui回复是pandoc的问题,根据自己对java

用R语言实现Excel中的数据透视表功能

前言 对于像我这种R语言刚入门的选手,虽然对Excel的各种操作还是蛮熟悉,但是想用R语言处理数据就像用Excel那么出神入化,还是花了不少时间去学了哈德利大神的tidyverse包,实际上tidyverse包是’tidyverse’,’tidyr’,’readr’,’purrr’,’dply

用ggplot2对数学函数进行画图

前言 学了一段时间的R和ggplot2,一直很想知道书中那些正态分布图两侧的拒绝域是怎么填充颜色的,找到这篇文章Creating plots in R using ggplot2 - part 9: function plots之后才理清了思路。 基础正态分布曲线 首先我们一个ggplot基础layer,x轴范围在[-4, 4](当然你可以设置任何你想设置的范围),然后把这个范围值传递给aes的x,然后我们添加stat_function选项,然后把函数dnorm传给stat_

kylin-ubuntu安装R语言和Rstudio

前言 在本文你将会了解到在ubuntu打造R语言开发环境的方法。 主要使用的软件如下: Kylin-ubuntu麒麟系统:银河麒麟社区版:下载 R语言版本:R version 3.4.1 (2017-06-30),官网 Rstudio:开发版1.1.375 (当时1.1.xxx版本还没发布,看最新版本) texlive2017:下载texlive2017-20170524.iso 输入法:小小输入法yong + ibus,下载yong-lin