当前位置: 首页 > news >正文

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

相关文章:

  • 后缀是php,怎么修改php后缀
  • inurl faq.php,使用 PHP
  • r语言中六种方法查看R函数源代码—— 鼠标放在函数上,按下F2
  • php mysqli_affected_rows(),Mysqli_num_rows与PHP中mysqli_affected_rows的区别
  • R语言字符串替换:gsub()
  • matlab实现数据压缩,【Matlab】Huffman编码如何实现数据压缩
  • getcurrenttime java,getcurrenttime
  • java nio netty 教程,4. 彤哥说netty系列之Java NIO实现群聊(自己跟自己聊上瘾了),netty实现...
  • java ucs 2,【字符编码系列】JavaScript使用的编码-UCS-2
  • R语言-文件管理系统操作 list.files dir.file dir
  • metaweblog php,.NET_在Asp.Net中创建MetaWeblog API, 概念   metaweblog是基于XML - phpStudy...
  • php android okgo上传图片,Android OkHttp的封装类OkGo的用法
  • find与xargs连用复制移动位置
  • linux命令行模式kvm,Linux虚拟机-使用命令行管理虚拟机---KVM一些常用的命令
  • 如何编译源代码
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【Linux系统编程】快速查找errno错误码信息
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Docker入门(二) - Dockerfile
  • echarts花样作死的坑
  • ES6系统学习----从Apollo Client看解构赋值
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Laravel核心解读--Facades
  • Promise面试题2实现异步串行执行
  • Python十分钟制作属于你自己的个性logo
  • Redis中的lru算法实现
  • Sublime Text 2/3 绑定Eclipse快捷键
  • vue-router 实现分析
  • Yii源码解读-服务定位器(Service Locator)
  • 阿里研究院入选中国企业智库系统影响力榜
  • 前端攻城师
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 学习HTTP相关知识笔记
  • 学习JavaScript数据结构与算法 — 树
  • 一个完整Java Web项目背后的密码
  • mysql面试题分组并合并列
  • 整理一些计算机基础知识!
  • (10)ATF MMU转换表
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Java)【深基9.例1】选举学生会
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)LINQ之路
  • (转)人的集合论——移山之道
  • .NET Micro Framework初体验
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET 依赖注入和配置系统
  • .Net的C#语言取月份数值对应的MonthName值
  • .NET基础篇——反射的奥妙
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化