Я новичок в R, и у меня есть много файлов климатических данных в текстовом формате с длинными именами в одной и той же папке, например, "tasmax_SAM-44_ICHEC-EC-EARTH_rcp26_r12i1p1_SMHI-RCA4_v3_day_20060101-20101231.txt", где каждый термин отделен«_» соответствует такой характеристике, как переменная, домен, институт, сценарий и т. д. Мне нужен код, который позволяет мне выбирать все файлы в моей папке, которые имеют то же имя, что и название модели, имя сценария, gcmприсвойте им имена и добавьте их по строкам.
Сначала я попытался создать список файлов и назначенных переменных для каждой части их имени, такой как имя_модели, имя_смкм и т. д., а затем создал условие, в котором я сравнивал этиПеременные в файлах с циклом.
file <- list.files ( pattern = '*.txt' )
group <- function(input){
index = which(file == input)
df=read.table(input,header=FALSE,sep="")
fname= unlist((strsplit(input,"_")),use.names=FALSE)
model_name=fname[3]
sce_name=fname[4]
gcm_name=fname[6]
m=1
for (m in 1:length(file)) {
if (model_name[m]==model_name[m+1] & sce_name[m]==sce_name[m+1] & gcm_name[m]==gcm_name[m+1]) {
data=rbind(df[m],df[m+1])
} else {}
}
}
for (i in 1:length(file)) {
group(file[i])
}
Ошибка, с которой я столкнулся с моим кодом, такова:
Ошибка в if (имя_модели [m] == имя_модели [m +]1] & sce_name [m] == sce_name [m +: пропущенное значение, где требуется TRUE / FALSE
В конце кода следует добавить файлы, соответствующие условию if acКроме того, как, например, сделать файл из этих двух файлов:
tasmax_SAM-44_ICHEC-EC-EARTH_rcp26_r12i1p1_SMHI-RCA4_v3_day_20060101-20101231.txt
tasmax_SAM-44_ICHEC-EC-EARTH_rcp26_r12i1p1_SMHI-RCA4_v3_day_20110101-20151231.txt
Любая помощь и предложения приветствуются!