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相关推荐

  1. 【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     若文件存在且 ...

  2. android unzip file,Unzip File in Android Assets

    可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I put a zip file in the android assets. How do ...

  3. java new file 路径_File file = new File(路径名) 路径名的2种写法

    项目的结构:相同颜色是同级的 bean的配置文件的读取和一般文件的读取有点差别的 public static void getValue(String key){ //传入"time&quo ...

  4. Java File类File [] listFiles()方法(带示例)

    File类File [] listFiles() (File Class File[] listFiles()) This method is available in package java.io ...

  5. 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/ ...

  6. java将图片的url转换成File,File转换成二进制流byte

    package com.xqy;import java.io.*; import java.net.HttpURLConnection; import java.net.URL; //java将图片的 ...

  7. remote couldn‘t create file: Read-only file system (remount failed)解决方法

    解决android /system目录中无法写入文件的问题 具体报错信息是 remote couldn't create file: Read-only file system Skipping /s ...

  8. python配置opencv环境后,读取图片,报错:can‘t open/read file: check file path/integrity

    运行出错代码: import cv2 import numpy as npimage = cv2.imread('C:/Pictures/桌面背景图片切换/wallhaven-6oq1k7.jpg', ...

  9. 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 ...

  10. 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 ...

最新文章

  1. 万物智联时代——2018年AIOT产业蓝皮书正式发布
  2. GDCM:gdcm::SplitMosaicFilter的测试程序
  3. springboot+jpa+mysql+redis+swagger整合步骤
  4. OLAP引擎:基于Presto组件进行跨数据源分析
  5. P2574 XOR的艺术
  6. golang byte转string_golang版memcached之groupcache缓存入门
  7. java 解析xml字符串的_java 解析xml字符串
  8. VS2008中文版MSDN订阅下载问题
  9. c语言以空格分割字符串_如何统计字符串中单词的个数?
  10. matlab中使用libsvm工具箱训练的svm分类器model保存
  11. windows Server 2016 开启远程登录和多用户同时远程登录
  12. 系统学习NLP(二十六)--NBSVM
  13. php的public、protected、private三种访问控制模式的区别
  14. asp正则过滤重复字符串的代码
  15. wacom linux 驱动下载,Ubuntu 8.04如何安装WACOM驱动
  16. 物联网消息服务器,GitHub - tian-yuan/CMQ: go 实现的分布式开源物联网MQTT消息服务器...
  17. Locks Aren't Slow; Lock Contention Is
  18. Ceph 命令 pool image 纠删
  19. 几种字符集与LPTSTR、LPCSTR、LPSTR、LPCTSTR、LPWSTR、LPCWSTR的意义
  20. 2022年新年焰火代码

热门文章

  1. 【操作系统】进程:管程
  2. for循环去掉最后一个逗号
  3. 宝塔Linux面板安装命令脚本大全(Centos/Ubuntu/Debian/Fedora/Deepin)
  4. Python中使用遍历在列表中添加字典的坑
  5. SMB2协议特性之oplock与lease(下
  6. linux can命令详解,Linux CAN编程详解
  7. 2021年【大学生Python学习】社区小博主【孤寒者】的年度总结
  8. HTTP 2.0 中文版
  9. python空间数据处理_基于Python的空间数据批量处理方法
  10. Flutter 嵌套深、刷新乱?少年,你怕是连Flutter的门槛都没摸到!