dir file list.file list.dirs
identify the folders
current.folder <- “C:/Where my files currently live”
new.folder <- “H:/Where I want my files to be copied to”
find the files that you want
list.of.files <- list.files(current.folder, “SDM.tif$”)
copy the files to the new folder
file.copy(list.of.files, new.folder)
#https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/list.files
list.files(path = ".", pattern = NULL, all.files = FALSE,full.names = FALSE, recursive = FALSE,ignore.case = FALSE, include.dirs = FALSE, no.. = FALSE)dir(path = ".", pattern = NULL, all.files = FALSE,full.names = FALSE, recursive = FALSE,ignore.case = FALSE, include.dirs = FALSE, no.. = FALSE)list.dirs(path = ".", full.names = TRUE, recursive = TRUE)
#https://statisticsglobe.com/extract-file-and-directory-name-from-path-in-r
file_path <- “C:/Users/Joach/Desktop/my directory/my file.txt” # Example path
file_path # Print example path
[1] “C:/Users/Joach/Desktop/my directory/my file.txt”
As you can see based on the previous output of the RStudio console, our example data is stored as TXT file in a folder called “my directory”.
#Example 1: Find Directory Name from Path Using dirname() Function
Example 1: Find Directory Name from Path Using dirname() Function
This example shows how to return only the directory name from our path using the dirname function.
For this, we simply have to apply the dirname function to our path object that we have created before. The dirname function automatically removes the file name and returns on the directory path:
dirname(file_path) # Apply dirname function
#[1] “C:/Users/Joach/Desktop/my directory”
Example 2: Find File Name from Path Using basename() Function
This example illustrates how to show only the name of our file by applying the basename function to our path object:
basename(file_path) # Apply basename function
[1] “my file.txt”
三、批量读取—
—xlsx包
首先尝试用R包解决。即xlsx包。
xlsx包在加载时容易遇到问题。基本都是由于java环境未配置好,或者环境变量引用失败。因此要首先配置java环境,加载rJava包。
百度了一下,网上已有很多解决方案。我主要是参考这个帖子,操作步骤为:
1、 安装最新版本的java。如果你用的R是64位的,请下载64位java。
下载地址: http://www.java.com/en/download/manual.jsp
要安装在 C:\Program Files\Java 下面,win8的尤其小心不要安装为C:\Program Files(x86)。可能是R在读取路径时,对x86这样的文件夹不大好识别吧,我第一次装在x86里,读取是失败的。
2、在R中加载环境,即一行代码,路径要依据你的java版本做出更改。
R
Sys.setenv(JAVA_HOME=‘C:\Program Files\Java\jre1.8.0_45\’)
之后再加载rjava包或者xlsx包就成功了。
xlsx包加载成功后,用read.xlsx就可以直接读取xlsx文件,还可以指定读取的行和段,以及第几个表,以及可以保存为xlsx文件,这个包还是很强大的。
但是这个方法存在两个问题:
1、不是所有的公司电脑都能自由的配置java环境。很多人的权限是受限的。而且有些公司内部应用是在java环境下配置的。就算你找了IT去安装java,但是一些内部应用可能会因为版本号兼容问题而出错,得小失大。
2、用xlsx包读取数据,在数据量比较小的时候速度还是比较快的。但是如果xlsx本身比较大,包含数据多,read.xlsx效率会很低,不如data.table包的fread读取快捷以及省内存。但fread函数不支持xlsx的读入。。。
(参见这篇帖子,里面对千万行数据,fread也只用了10秒左右,比常规的read.table或者read.csv至少省时一倍)
综上,由于java环境的复杂性与兼容度,还有xlsx包本身读取速度的限制,用xlsx包读取xlsx包的方法,更适合于:
1、个人电脑,自己想怎么玩都无所谓,或者高大上的linux, mac环境
2、数据量不会特别大,而且excel文件很干净,需要细节的操作
实际操作案例:
批量写入
#1、读取xlsx中所有的sheet表格
#如果像vector一样定义List??——list()函数来主动定义,用data.list[[i]]来赋值
data.list<-list()
for (i in 1:2){
data.list[[i]]=read.xlsx(“C1.xlsx”,i)
}
批量写出
#3、利用List批量读出操作
#难点:如果构造输出表格的名称——paste来构造名称
flie=list()
xlsxflie=paste(1:2,".xlsx",sep="")
for(i in 1:2){
flie[[i]]=paste(“C:/Users/long/Desktop/”,xlsxflie[i],sep="")
write.xlsx(data.list2[[i]],file)
}
其中出现了一个小错误:Error in file[[i]] : object of type ‘closure’ is not subsettable
这一错误是因为我写错函数名字了… file->flie(详情见:http://bbs.pinggu.org/thread-3142627-1-1.html)
主要运用了list函数,详情可见:R语言︱list用法、批量读取、写出数据时的用法
——————————————————————————————————————————————————————————————————
四、批量读入XLSX文件——先转换为CSV后读入
CSV读入的速度较快,笔者这边整理的是一种EXCEL VBA把xlsx先转换为csv,然后利用read.csv导入的办法。
WPS中调用VBA需要额外下砸一个插件,
之后应用list.files以List方式读入。
#lapply读取法
filenames <- list.files(“C:/Users/a.csv”, pattern = “.csv”,full.names = TRUE) #变成list格式
#没有full.names = TRUE,都会出现cannot open file: No such file or directory
name=function(x) {
read.csv(x,header=T)
}
datalist <- lapply(filenames,name) #filenames执行name函数
——————————————————————————————————————————————————————————————————
五、批量读入文件夹中的指定文件(如*.xlsx)
代码思路:先遍历文件夹(list.files),然后通过循环依次读写(read.xlsx)。
为什么lsit.files不能直接把完整数据读入文件?——需要read.xlsx这一步骤
##批量读入文件夹中的xlsx文件
#如何批量读取一个文件夹中的各种txt文件
micepath <- “C:/Users/long/Desktop”
micefiles <- list.files(micepath, pattern = “*.xlsx$”, full.names = TRUE)
##文件信息放入list中
files=list()
for (i in 1:2){
files[i]=read.xlsx(micefiles[[i]],header = F,1)
}
——————————————————————————————————————————————————————————————————
五、批量读入文件夹中的文本文件(*.txt),并生成名称、文档数据框
——用在情感分析中情感词的打分数
代码思路:先遍历文件夹中所有txt(list.files)、构造文本读入函数(read.txt)、找文本名字(list.files)、然后生成数据框(as.data.frame)
##批量读入txt文件,并将文本放入同一个数据框
reviewpath <- “F:/R语言/R语言与文本挖掘/情感分析/数据/rawdata/review_sentiment/train2”
completepath <- list.files(reviewpath, pattern = “*.txt$”, full.names = TRUE)
######批量读入文本
read.txt <- function(x) {
des <- readLines(x) #每行读取
return(paste(des, collapse = “”)) #没有return则返回最后一个函数对象
}
review <- lapply(completepath, read.txt)
#如果程序警告,这里可能是部分文件最后一行没有换行导致,不用担心。
######list转数据框
docname <- list.files(reviewpath, pattern = “*.txt$”)
reviewdf <- as.data.frame(cbind(docname, unlist(review)),
stringsAsFactors = F)
其中,list.files()中,full.names=T代表读入文件+信息,full.names=F代表读入文件名字。
本代码来源于书《数据挖掘之道》情感分析章节。
——————————————————————————————————————————————————————————————————
六、excel的xlsx格式读取——openxlsx包
跟xlsx包可以一拼,为什么没有特别好的excel包,因为微软的软件不开源,而且内嵌设置时长变化,所以么有一款统一的好函数包,来进行读取。
library(openxlsx)
data=read.xlsx(“hsb2.xlsx”,sheet=1)
——————————————————————————————————————————————————————————————————
七、write.table读出txt文本
write.table(data,“names”,
quote = F,row.names = FALSE, col.names = FALSE)
输出的结果可能是像excel列表一样:
id names
1 “您好”
2 “格式”
3 “读取”
所以需要去掉行、列名,同时去掉双引号。
如果我想得到,这样格式的呢:
您好 格式 读取
需要调整ecol,默认的ecol="\n",就是回车,所以会造成换行,所以需要换成“\r”,同时中间需要有空格分开,所以最终ecol="\r\ "用【+空格】来表达空格
——————————————————————————————————————————————————————————————————————
八 文件夹读入
文件夹读入的方式也挺多的。
第一步:获取文件夹内全文件内容
两种函数:dir()以及list.files()
dir(‘C:\Users\long\Desktop\’,pattern = “txt " ) l i s t . f i l e s ( ′ C : U s e r s l o n g D e s k t o p ′ , p a t t e r n = " t x t ") list.files('C:\\Users\\long\\Desktop\\',pattern = "txt ")list.files(′C:UserslongDesktop′,pattern="txt”)
同时,可以通过pattren来选择规定格式的文件内容。
第二步:生成系统路径
paste(“C:\Users\long\Desktop\”,“txt”)
[1] “C:\Users\long\Desktop\ txt”
file.path(“C:\Users\long\Desktop”,“txt”)
[1] “C:\Users\long\Desktop/txt”
对比两者,一般用paste来生成系统路径的时候,在最终结果,结合的地方会多一个空格,当然也可以用去空格的方式排除,但是不够好。
所以可以用file.path的方式直接生成,比较方便,而且绝对正确
————————————————
版权声明:本文为CSDN博主「悟乙己」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_26917383/article/details/51100736
dir file list.file list.dirs相关推荐
- 【shell】常用语法 -b file -c file -f file-d file -x file
[shell]常用语法 -b file -c file -f file-d file -x file 一.test条件判断 1,test文件测试: -b file 若文件存在且 ...
- android unzip file,Unzip File in Android Assets
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I put a zip file in the android assets. How do ...
- java new file 路径_File file = new File(路径名) 路径名的2种写法
项目的结构:相同颜色是同级的 bean的配置文件的读取和一般文件的读取有点差别的 public static void getValue(String key){ //传入"time&quo ...
- Java File类File [] listFiles()方法(带示例)
File类File [] listFiles() (File Class File[] listFiles()) This method is available in package java.io ...
- Centos系列 Curl error (37): Couldn‘t read a file:// file for file:///etc/pki/rpm-gpg/RPM-GPG-KEY-XXXX
最近在Centos8系统安装gcc时提示"Curl error (37): Couldn't read a file:// file for file:///etc/pki/rpm-gpg/ ...
- java将图片的url转换成File,File转换成二进制流byte
package com.xqy;import java.io.*; import java.net.HttpURLConnection; import java.net.URL; //java将图片的 ...
- remote couldn‘t create file: Read-only file system (remount failed)解决方法
解决android /system目录中无法写入文件的问题 具体报错信息是 remote couldn't create file: Read-only file system Skipping /s ...
- python配置opencv环境后,读取图片,报错:can‘t open/read file: check file path/integrity
运行出错代码: import cv2 import numpy as npimage = cv2.imread('C:/Pictures/桌面背景图片切换/wallhaven-6oq1k7.jpg', ...
- failed to copy ‘xxx‘ to ‘system/bin/xxx‘: remote couldn‘t create file: Read-only file system
1. 错误描述 adb: error: failed to copy 'mdm-rmc-agent' to 'system/bin/mdm-rmc-agent': remote couldn't cr ...
- C1010 unexpected end file of file while looking for precompiled header.
往c++项目中添加文件时遇到了这个错误 C1010 unexpected end file of file while looking for precompiled header. Did you ...
最新文章
- 万物智联时代——2018年AIOT产业蓝皮书正式发布
- GDCM:gdcm::SplitMosaicFilter的测试程序
- springboot+jpa+mysql+redis+swagger整合步骤
- OLAP引擎:基于Presto组件进行跨数据源分析
- P2574 XOR的艺术
- golang byte转string_golang版memcached之groupcache缓存入门
- java 解析xml字符串的_java 解析xml字符串
- VS2008中文版MSDN订阅下载问题
- c语言以空格分割字符串_如何统计字符串中单词的个数?
- matlab中使用libsvm工具箱训练的svm分类器model保存
- windows Server 2016 开启远程登录和多用户同时远程登录
- 系统学习NLP(二十六)--NBSVM
- php的public、protected、private三种访问控制模式的区别
- asp正则过滤重复字符串的代码
- wacom linux 驱动下载,Ubuntu 8.04如何安装WACOM驱动
- 物联网消息服务器,GitHub - tian-yuan/CMQ: go 实现的分布式开源物联网MQTT消息服务器...
- Locks Aren't Slow; Lock Contention Is
- Ceph 命令 pool image 纠删
- 几种字符集与LPTSTR、LPCSTR、LPSTR、LPCTSTR、LPWSTR、LPCWSTR的意义
- 2022年新年焰火代码
热门文章
- 【操作系统】进程:管程
- for循环去掉最后一个逗号
- 宝塔Linux面板安装命令脚本大全(Centos/Ubuntu/Debian/Fedora/Deepin)
- Python中使用遍历在列表中添加字典的坑
- SMB2协议特性之oplock与lease(下
- linux can命令详解,Linux CAN编程详解
- 2021年【大学生Python学习】社区小博主【孤寒者】的年度总结
- HTTP 2.0 中文版
- python空间数据处理_基于Python的空间数据批量处理方法
- Flutter 嵌套深、刷新乱?少年,你怕是连Flutter的门槛都没摸到!