Windows下路径要用斜杠/
或者双反斜杠\\
R本身把\
当做转义符,所以写pattern的时候要用\\
进行转义
获取文件目录信息
目录操作
getwd & setwd
- getwd():获得当前工作目录
- setwd() :设置当前工作目录
setwd("C:/data")
dir & list.files - 获取
dir 与 list.files 功能相同;列出当前目录中所有的文件
- dir() :列出当前目录中所有的文件名
- dir(path=”/home/conan/R”, pattern=Null, all.files=False, full.names=Fasle, recursice=Fasle, igonre.case= False, include.dirs=False, no..=False):查看指定目录的文件
path:查看指定路径下的文件。
pattern :匹配的正则表达式模式
all.files = False(默认) ;若为True,则列出隐藏的文件名
full.names=False(默认)
"我的形状"
;若为True,列出含相对路径的文件名"./我的形状"
|
|
choose.dir - 获取
通过选取的方式获得目录
|
|
system(“tree”) - 获取
通过系统命令以树状结构查看目录结构
- file.info()
dir.create - 新建
- dir.create():在当前目录下,新建一个目录
- dir.create(path=”a1/b2/c3”,recursive = TRUE):创建一个3级子目录./a1/b2/c3
file.path - 合并
- file.path(…, fsep = .Platform$file.sep)
- file.path(getwd(), dir()) :当前工作目录下的文件的路径
… : 字符串
fsep : 用于使用的路径分隔符
|
|
一般用paste来生成系统路径的时候,在最终结果,结合的地方会多一个空格,当然也可以用去空格的方式排除,但是不够好。
用file.path的方式直接生成,比较方便,而且绝对正确。
几个特殊的目录
- R.home() 查看R软件的相关目录
- .Library 查看R核心包的目录
- .Library.site 查看R核心包的目录和root用户安装包目录
- .libPaths() 查看R所有包的存放目录
- system.file() 查看指定包所在的目录
文件操作
file.exist - 存在
判断文件是否存在
|
|
file.remove - 删除
删除某目录
file.create - 创建
创建文件
|
|
file.copy - 复制
|
|
file.append
file.rename - 重命名
对文件重命名
- file.rename(“old_name”, “new_name”):将old_name变更为new_name
压缩与解压
unzip(),zip() 两个函数,可以压缩和解压缩
导入
导入 - 数据表
- 要导入的数据必须存放在getwd()目录下
- Windows下路径要用斜杠
/
或者双反斜杠\\
readr
library(readr)
- read_delim(“filename.xxx”, delim=””) : 自由分隔符
delim= "|"
或其他任何形式
- read_csv(“filename.csv”, col_names=T, col_types=NULL, skip = 0, locale(), na=c(“”,”NA”)):分隔符-逗号
col_names = True(默认) / False 或者 c(“”,””) 指定的 [向量]列名
col_types = cols(colname=colcharacter() ) / cols(colename= “c”, colname=”“) :指定某个列的类型;
- 可以使用简写 each character represents one column: c = character, i = integer, n = number, d = double, l = logical, D = date, T = date time, t = time, ? = guess, or _/- to skip the column.
- cols(colname=col_skip() ) 跳过某个列不进行选取;
skip = n 跳过的行数
locale= locale(encoding=”UTF-8”, date_format=”%AD”,time_format=”%AT”) (默认为US-centric)
- encoding=”UTF-8” / “gb2312”
na = c(“”, “NA”) :设置
""
与"NA"
显示为NA;也可自定义
- read_tsv():制表符
- read_csv2():分号
- read_table()
- read_fwf()
readxl
.xls和.xlsx格式的Excel工作表
- read_excel(path, sheet = NULL, range = NULL, col_names = TRUE, col_types = NULL, na = “”, trim_ws = TRUE, skip = 0, n_max = Inf, guess_max = min(1000, n_max)) :读取xls/xlsx的工作表
path:Path to the xls/xlsx file
sheet:Sheet to read;整数或者字符串
range:读取的范围,例如 “B3:D87”
col_names:True/Fasle,或者输入自定义的列名,长度需要与col_types相同
col_types:
na = “ ”:默认将
空格
视为NULLskip=0:跳过行数;若给定了
range
则忽略
- excel_sheet(path) :显示表中的sheet名称
导入 - 非表格式
非表格式的(Non-Tabular);这里的文本文件指的是非表格式的文件,如纯文本文件,html文件
readr
- read_file(file, locale=default_locale()):读入为一个单一的字符串
file : 文档路径,一个连接或一个文本数据
- Files ending in .gz, .bz2, .xz, or .zip 将自动被解压
- Files starting with http://, https://, ftp://, or ftps:// 将自动被下载
- Remote gz files 也能被自动下载
locale=locale() : 默认为US-centric
- read_file_raw(file):读入为一个未加工的向量
- read_lines(file, skip=0, n_max=-1L, locale=default_locale(), na=character(), progress=interactive()):逐行读入,每一行作为一个单一的字符串
- read_lines_raw():逐行读入,每一行作为一个未加工的向量
- read_log(file, col_names=FALSE, col_types=NULL, skip=0, n_max=-1L):读入日志文档
scan
scan(“file.xxx”, what=double(), seq=””, n=-1, nmax=-1, skip=0, encoding=”UTF-8”)
读取文本文件,默认情况下读取文件中以[空格分割] 所有[浮点数值]
- 如果文件中包含非数值,可以字符串形式读入
scan("a.txt",what="")
- 指定分隔符为换行,
scan(“a.txt”,what=””,sep=”\n”)
返回以换行分割的字符串向量 - 如果数据为表格形式:因为有表头,用scan不能读入
- 如果文件中包含非数值,可以字符串形式读入
what:读入的数据类型;The supported types are [ logical, integer, numeric, complex, character, raw and list. ]
- character(0):每个单词作为字符向量的一个元素
sep:分隔符,默认为空格
" "
n = -1:显示至最后一行
nmax = -1:读取至最后一行
skip=0:跳过的行数
encoding=”UTF-8” / “Latin1”
quote =’’ : 若提示 EOF within quoted string可将
quote = ''
readline
可以从键盘读取单行数据
|
|
readLines
- readLines(“file.xxx”, encoding=”UTF-8”) :每一行当做一个字符串。等价于scan中指定分隔符为换行
- 用于读取字符型的格式文件;常用于文本文件
encoding = “UTF-8” / “Latin1” ; Lattin1是[ISO-8859-1]的别名,有些环境下写作Latin-1。ISO-8859-1编码是单字节编码,向下兼容ASCII
导出
导出 - 数据表
readr
- write_delim(x, path, delim = “ “, na = “NA”, append = FALSE, col_names = !append) :默认分隔符为
" "
- write_csv(x, path, na = “NA”, append = FALSE, col_names = !append) :导出为逗号分隔符的文档
x :要导出的对象
path:Path or connection to write to.
append=False (默认), 覆盖已有的文件;若为True,增加已经存在的文件
col_names = !append 写入的时候不写入列名
- write_tsv() :分隔符为制表符
\t
- write_excel_csv():导出为csv文档
All columns are encoded as UTF-8
Basic
- write.table
- write.csv()
导出 - 文本&文本文件
readr
write_file(x, path):导出为字符串文档
write_lines():导出为字符串向量,每一个元素一行
write_rds():导出为RDS文档
cat
- cat(x, file=””, sep=””, fill=False, labels=NULL, append=False):
- 拼接后输出对象
- 把结果写到指定的文件中
x:R的对象
file:一个连接,或命名的文件打印到一个字符串;默认情况下打印到标准输出连接
sep=” “:默认为空格; 每个元素后追加一个字符串的字符向量;
append = False 覆盖file内容;若为True,表示附加到file
|
|
cat vs. paste
- cat是输出,paste连接成一个字符串
- 显示结果是:一个没有引号的结果(cat),另一个是有引号的字符串(paste)
|
|
cat vs. print
- cat被认为是更低级别的print,会识别转义符并进行执行
|
|
writeLines
案例 - 获取指定目录下的csv文档,并合并输出
- Windows下路径要用斜杠
/
或者双反斜杠\\
|
|
|
|