Sys.time()
Sys.sleep(1)
install.packages("") #安装R包 例如install.packages("ggplot2")
library() #加载R包 例如library(ggplot2)
help.start() #打开帮助文档首页
help("fun")或?fun #查看函数fun的的帮助
help.search("fun")或??fun #以fun为关键词搜索本地帮助文档
example("fun") #函数fun的使用示例
RSiteSearch("fun") #以fun为关键词搜索在线文档和邮件列表
apropos("fun",mode="function") #列出名称中含有fun的所有可用函数
data() #列出当前已加载包中所含的所有可用示例数据集
# sites.json
{
"id":["1","2","3"],
"name":["Google","Runoob","Taobao"],
"url":["www.google.com","www.runoob.com","www.taobao.com"],
"likes":[ 111,222,333]
}
library("rjson")
# 获取 json 数据
path = gsub("\\\\", "/", 'D:\\sites.json')
result <- fromJSON(file = "sites.json")
# 矩阵
mat <- matrix(c(3:14), nrow = 4, byrow = TRUE)
print(mat)
rownames = c("row1", "row2", "row3", "row4")
colnames = c("col1", "col2", "col3")
P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames))
print(P)
# 向量
li = c(1,2,3)
print(li)
y = c("1"=4, "2"=5, "3"=6)
names(y) = NULL
li = rep(c(4,3,2,1),c(2,2,2,1))
li = seq(1,7,0.5)
# 创建数组
result <- array(c(vector1,vector2),dim = c(3,3,2))
print(result)
# 列表
thisdict <-list(
brand = letters[1:3],
model = c('1-10','2-20','3-30'),
KK = 1:4
)
thisdict[['brand']
thisdict$brand
# 因子
x <- c("男", "女", "男", "男", "女",levels=c('男','女'))
sex <- factor(x)
print(sex)
print(is.factor(sex))
sex=factor(c('f','m','f','f','m'),levels=c('f','m'),labels=c('female','male'),ordered=TRUE)
print(sex)
# 数据框
table = data.frame(
姓名 = c("张三", "李四"),
工号 = c("001","002"),
月薪 = c(1000, 2000)
)
print(table)
#正态分布
rnorm(n=as.numeric(args[1]), mean=as.numeric(args[2]))
# 循环
for(i in 1:length(args)){
eval(parse(text=args[[i]]))
}
#自定义函数
roll<-function(){
dice<-sample(1:6,2,replace = T)#可重复抽样
sum(dice)
}
roll()
# 查看R支持的编码文件格式
iconvlist()
# 文件和目录管理函数
getwd() 返回当前工作目录。
setwd(path) 设置当前工作目录。
Sys.getlocale()
Sys.setlocale(category = "LC_ALL", locale = "Chinese") # 将本地语言默认为中文
list.files()或dir() 查看目录中内容。 list.files(pattern=’.*[.]r$’)可以列出所有以“.r”结尾的文件。
file.path() 把目录和文件名组合得到文件路径。
file.info(filenames) 显示文件的详细信息。
file.exists() 查看文件是否存在。
file.access() 考察文件的访问权限。
create.dir() 新建目录。
file.create() 生成文件。
file.remove()或unlink() 删除文件。unlink()可以删除目录。
file.rename() 为文件改名。
file.append() 把两个文件相连。
file.copy() 复制文件。
basename()和dirname() 从一个全路径文件名获取文件名和目录。
# 读写文本文件
ll <- readLines("data/class.csv")
print(head(ll, 3))
ll <- readr::read_lines("data/class.csv")
print(head(ll, 3))
vnames <- strsplit(ll, ",")[[1]]
writeLines(vnames, "class-names.txt")
readr::write_lines(vnames, "class-names.txt")
vnames <- scan(
"class-names.txt", what=character(),
quiet=TRUE)
# 文本文件分批读写
fin <- file("data/cancer.csv", "rt")
fout <- file("tmp.csv", "wt", encoding="UTF-8")
repeat{
lines <- readLines(fin, n=10)
cat("Read", length(lines), "lines.", "\n")
if(length(lines)==0) break
writeLines(lines, fout)
}
close(fout)
close(fin)
# 读写CSV文件
fstr <-
"name,score
王芳,78
孙莉,85
张聪,80
"
d <- read.csv(textConnection(fstr), header=TRUE)
library("readr")
d.small <- read_csv("name,x,y
John, 33, 95
Kim, 21, 64
Sandy, 49, 100
")
d.small <- read_csv("John, 33, 95
Kim, 21, 64
Sandy, 49, 100
", col_names=c("name", "x", "y") )
data <- read_csv("sites.csv", encoding="UTF-8")
d <- read_csv("data/bp.csv", locale=locale(encoding="GBK"))
print(data)
like <- max(data$likes)
#is.data.frame
#as.numeric()
#as.character()
#as.Date(d.dates[["出生日期"]], format='%Y/%m/%d')
print(like)
retval <- subset(data, likes == 222)
print(retval)
# 写入新的文件
write.csv(retval, "runoob.csv", row.names = FALSE)
d1 <- tibble("学号"=c("101", "103", "104"),
"数学"=c(85, 60, 73),
"语文"=c(90, 78, 80))
write.csv(d1, file="tmp1.csv", row.names=FALSE)
# 读写剪切板
myDF <- read.delim("clipboard")
write.table(iris, file="clipboard", sep = "\t", row.names=FALSE, col.names = NA)
# 读写excel - readxl
read_excel(path, sheet = 1, col_names = TRUE, col_types = NULL, na = "", skip = 0)
# 标准输入输出流
#1) 从标准输入流中读取数据
a <- read.table(stdin())
#2)打印信息到标准输出流
write("I am stdout", stdout())
#3) 打印错误信息到标准错误流
write("I am stderr", stderr())
# 输出重定向文本
# append = TRUE 追加文本,split = TRUE 可将输出同时发送到屏幕和文件中
# 不带后缀则存储的是R脚本
sink("myoutput", append = TRUE, split = TRUE) #此时工作目录中会出现一个名为"myoutput"的空文件
source("script.R") # print.eval=TRUE, echo=TRUE 显示源代码
sink()
# 参考:https://www.itranslater.com/qa/details/2583846506029646848
arg1 <- 1
arg2 <- 2
system(paste("Rscript file_to_source.R", arg1, arg2))
# 输出重定向图像
pdf("mygraph.pdf") #此时工作目录中将会生成一个名为mygraph的空白pdf文档
source("script.R")
dev.off() #此时图形才真正保存在pdf文档中
#执行完以下代码后,屏幕输出结果,同时文本和图形也分别存储到了文件中。
sink("myoutput", append = TRUE, split = TRUE)
pdf("mygraph.pdf")
source("script.R")
sink()
dev.off()
#cat 可以连接 ... 中的对象,并将其输出到屏幕或文件中
cat(... , file = "myfile", append = FALSE)
name <- "Bob"
cat("Hello", name, "\b.\n", " Isn\'t R", "\t", "great?\n", file = "cattest.txt")
#writeLines
writeLines(text, con = stdout(0, sep ="\n", useBytes = FALSE)
lin <- c("Hello Bob", "Isn\'t R great?")
writeLines(lin, con = "lindata.txt")
# 文件链接
file("path", open="", blocking=T,
encoding = getOption("encoding"),
raw = FALSE)
url(description, open = "", blocking = TRUE,
encoding = getOption("encoding"))
textConnection(description, open="r",
local = FALSE,
encoding = c("", "bytes", "UTF-8"))
gzfile(description, open = "",
encoding = getOption("encoding"),
compression = 6)
bzfile(description, open = "",
encoding = getOption("encoding"),
compression = 9)
xzfile(description, open = "",
encoding = getOption("encoding"),
compression = 6)
unz(description, filename, open = "",
encoding = getOption("encoding"))
# 二进制文件访问
save(data01, file="data01.RData")
save(x, y, file="saved20210811.RData")
save(list=c("x", "y"), file="saved20210811.RData")
load("saved20210811.RData")
# 判断文件是否存在
if (file.access("xxx.R", mode = 0) == 0){
source("xxx.R")
} else {
print("File not found")
}
#使用命令行参数运行R程序
#args_test.R 代码如下:
Args <- commandArgs()
#Args <- commandArgs(trailingOnly = TRUE) #只接收R脚本后面的参数
cat("Args[1]=",Args[1],"\n")
cat("Args[2]=",Args[2],"\n")
cat("Args[3]=",Args[3],"\n")
cat("Args[4]=",Args[4],"\n")
cat("Args[5]=",Args[5],"\n")
cat("Args[6]=",Args[6],"\n")
cat("Args[7]=",Args[7],"\n")
#运行如下:
#Rscript myScript.R "a=5" "b=100"
#$ R CMD BATCH --no-save --no-restore "--args a=1 b=c(2,5,6)" test.R test.out &
Rscript args_test.R AAA BBB
R CMD BATCH args_test.R AAA BBB
#结果如下:
Args[1]= /usr/local/lib64/R/bin/exec/R
Args[2]= /usr/local/lib64/R/bin/exec/R
Args[3]= --no-restore
Args[4]= --file=args_test.R
Args[5]= --args
Args[6]= AAA
Args[7]= BBB
# R CMD BATCH --no-save --no-restore '--args a=1 b=c(2,5,6)' test.r test.out &
# test.r
args <- commandArgs(TRUE)
if(length(args)==0)
{
print("No arguments supplied.")
##supply default values
a = 1
b = c(1,1,1)
}else
{
for(i in 1:length(args))
{
print(args[i])
print(parse(text=args[[i]]))
print(eval(parse(text=args[[i]])))
}
}