我必须读取一个以名称hello开头的文本文件列表,这些文件位于同一文件夹中。我必须删除每个字母后的句号,因为我只想使用句号作为分隔符。
例如,如果一行文字看起来像这样:“apple。 10“。
我擦除同一行上的句号以获得此结果:“apple 10。”
以下是我的代码的一瞥。
files0 <- list.files(path=maindir,pattern="hello",full.names=F,recursive=T,
include.dirs=T)
下一个循环效率不高,因为我必须创建临时文本文件才能使用scan()函数。
############### First step
for(a in 1:length(files0)){ #start of the loop going through
# every files0
read <- readLines(paste(maindir,files0[a],sep="/")) #read each line
hello <- gsub("(\\D+)\\.","\\1", lec) #remove every period after a letter
write.table(mod,file=paste(maindir,paste("temporary",files0[a],sep="_"),sep="/"),
sep = ";",col.names = T,row.names = F,quote = FALSE)
#create new temporary files without the period after a letter
} #end of the loop
##################Second step
files <- list.files(path=maindir,pattern="temporary",full.names=F,
recursive=T,include.dirs=T)
for(b in 1:length(files)){ #start of the loop going through every files
hola <- scan(files[b],character(), sep=".") #read every files and
# use period as delimiters
} #end of the loop
我想在R中找到scan()函数的替代方法,因为我不必创建临时文件。此外,我希望能够直接使用原始文件(files0)而无需修改它们。
例如,我尝试过strsplit()函数,但它没有使用句点正确分隔我的文本文件。
感谢您的帮助。
答案 0 :(得分:0)
我找到了另一种选择。
for(a in 1:length(files0)){ #start of the loop going through
# every files0
read <- readLines(paste(maindir,files0[a],sep="/")) #read each line
hello <- gsub("(\\D+)\\.","\\1", lec) #remove every period after a letter
hello1 <- unlist(strsplit(hello, "[.]"))
} #end of the loop
我只需要使用unlist函数(strsplit())。