嗨来到R社区!
我是一个新的R用户,经过几个小时的搜索后,我希望你能帮我解决问题并了解错误的位置。
所以,我有来自法国Litto3D程序的激光雷达数据。我需要使用十二个图块来使用几种插值来生成数字场模型(我将比较不同的插值方式)。 为此,我开始使用Surfer,因为数据的高度,并将方法转移给我的同事和所有需要它的人。
我做了什么以及我尝试做什么:首先,我更改了XYZ文件的文件扩展名(包含XYZ激光雷达点),并使用代码为R中的12个图块充电。 它似乎已经工作但现在我想在同一时间给我所有文件的列号命名(因为它们目前没有任何名称),这正是它不再起作用的地步。我出现了一个错误:“换行时出错:'文件'必须是字符串或连接”
整个代码:
List.filesxyz = list.files("Donnees_pour_tests",pattern = ".xyz",recursive=F,full.names = T)
xyztest=List.filesxyz
old_filenames <- List.filesxyz
new_filenames <- replace_extension(List.filesxyz,"txt")
file.rename (old_filenames,new_filenames)
List.filestxt = list.files("Donnees_pour_tests",pattern = ".txt",recursive=F,full.names = T)
csvtest=List.filestxt
old_filenames <- List.filestxt
new_filenames <- replace_extension(List.filestxt,"csv")
file.rename (old_filenames,new_filenames)
setwd("C:/Mydirectory/Rspatial2018/data/Donnees_pour_tests")
list.files(pattern=".csv$")
list.filenames<-list.files(pattern=".csv$")
list.filenames
list.data<-list()
for (i in 1:length(list.filenames))
{
list.data[[i]]<-read.csv(list.filenames[i])
}
names(list.data)<-list.filenames
list.data[1]
import.multiple.csv.files<-function(mypath,mypattern,...)
{
tmp.list.1<-list.files(mypath, pattern=mypattern)
tmp.list.2<-list(length=length(tmp.list.1))
for (i in 1:length(tmp.list.1)){tmp.list.2[[i]]<-read.csv(tmp.list.1[i],...)}
names(tmp.list.2)<-tmp.list.1
tmp.list.2
}
csv.import<-import.multiple.csv.files("C:/Mydirectory/Rspatial2018/data/Donnees_pour_tests/",".csv$",sep=" ", dec=".")
save(import.multiple.csv.files,file="C:/Mydirectory/Rspatial2018/data/Donnees_pour_tests/")
data = read.csv(list.data,header=FALSE,sep=" ", dec = ".")
setnames(data, old=c("V1","V2","V3", "V4", "V5", "V6"), new=c("X","Y","Z","Classe","Intensite_signal_retour","Temps_GPS_absolu"))
}
我希望你能帮助我。我仍然会在网上找到他的解决方案:) 多谢! 同盟
答案 0 :(得分:0)
如果我理解你的意图正确,一个简单的for
循环就会做你想要的。
# list of files
filelist <- dir(pattern='csv$')
# read files and rename the columns
for (i in filelist) {
x <- read.csv(i)
names(x) <- c("X","Y","Z","Classe","Intensite_signal_retour","Temps_GPS_absolu")
write.csv(x, i, row.names=F)
}
答案 1 :(得分:0)
我终于找到了一种简单的方法来做同样的事情。我首先收费并合并了我所有的CSV文件,并且我创建了一个包含所有这些文件的数据框(第一个代码不是这种情况,只有第一个文件被采用)。然后我给数据框的列命名,如果我需要作为单个表,我现在可以导出。
如果有人需要,我会分享代码:
## import and merging of the CSV files in a single table (dataframe)##
multmerge <- function(mypath = getwd()){ #getwd correspond to the call of the directory where are the data##
require(dplyr)
dataset <- list.files(path=mypath, full.names=TRUE, pattern="*.csv") %>% lapply(read.csv, header=F, sep=" ") %>% bind_rows()
dataset
}
AllCSVFiles <- multmerge(mypath=getwd())
###############################################################
#### give a name to the columns ####
head(AllCSVFiles) #to read the first rows and columns#
setnames(AllCSVFiles,old=c("V1","V2","V3","V4", "V5", "V6"), new=c("X","Y","Z","Classe","Intensite_signal_retour","Temps_GPS_absolu"))
head(AllCSVFiles) #to check the new names of the columns#
见啊!