将数据读入具有某些限制的向量/扫描[R]
我有一个txt文件,它的结构很好:将数据读入具有某些限制的向量/扫描[R],r,R,我有一个txt文件,它的结构很好: “ fileName1.doc Author=Name fileName2.doc Author=Name fileName2.doc Author=Name “ 如何使用scan只保存文件名(前9个字符),而不保存扩展名和作者 我用过: Fnames <- scan("E:/myFiles.txt",character()) Fnames要仅获取前9个字符,请使用sep=“\n”行扫描,并使用substr(…,1,9) 您甚至可以使用read
“
fileName1.doc Author=Name
fileName2.doc Author=Name
fileName2.doc Author=Name
“
如何使用scan只保存文件名(前9个字符),而不保存扩展名和作者
我用过:
Fnames <- scan("E:/myFiles.txt",character())
Fnames要仅获取前9个字符,请使用sep=“\n”
行扫描,并使用substr(…,1,9)
您甚至可以使用read.table()
(在后台使用scan()
)和sep=“.”
,并抓取第一列。这样,如果文件名超过9个字符,您就不必担心了。它会把它们全部归还
read.table("E:/myFiles.txt", sep=".", stringsAsFactors=FALSE)[[1]]
例如,使用read.table()
的text
参数如下:
read.table(text = x, sep = ".", stringsAsFactors = FALSE)[[1]]
# [1] "fileName1" "fileName2" "fileName2"
数据:
x这里有一个使用readr
包的解决方案,它比base R运行快10倍。将文件作为固定with文件读取,只允许我们读取每行的前9个字符,并利用readr::read_fwf()
性能特征
library(readr)
rawData <- "fileName1.doc Author=Name
fileName2.doc Author=Name
fileName2.doc Author=Name
"
data <- read_fwf(rawData,fwf_widths(9,col_names="fileName"))
库(readr)
rawData补充说,如果您有千兆字节的数据要这样处理,MapReduce
-系列工具更适合即使fread
也需要在执行substr
之前将整个对象放入RAM中
x <- "fileName1.doc Author=Name
fileName2.doc Author=Name
fileName2.doc Author=Name"
library(readr)
rawData <- "fileName1.doc Author=Name
fileName2.doc Author=Name
fileName2.doc Author=Name
"
data <- read_fwf(rawData,fwf_widths(9,col_names="fileName"))