Я довольно новичок в R и задаю пару вопросов о цикле, который я выполняю для выполнения. Я постараюсь объяснить себя как можно лучше, чтобы я не хотел, чтобы я делал это.Выполнение цикла в R
for(i in (1988:1999,2000:2006)){
yearerrors=NULL
binding=do.call("rbind.fill",x[grep(names(x), pattern ="1988.* 4._ data=")])
cmeans=lapply(binding[,2:ncol(binding)],mean)
datcmeans=as.data.frame(cmeans)
finvec=datcmeans[1,]
kk=0
result=RMSE2(yields[(kk+1):(kk+ncol(binding))],finvec)
kk=kk+ncol(binding)
yearerrors=c(result)
}
yearerrors
Сначала я желаю цикл для перебора имен файлов данных. В частности, за 1988-2006 годы в том месте, где 1988 год находится , размещенном прямо сейчас в обязательном заявлении. x - список файлов данных , введенный в R, а 1988 - часть имени файла. Итак, у меня есть имена файлов, начинающиеся с 1988, 1989, ..., 2006.
выходы - это числовой вектор, и я хотел бы ввести индексы вектор в функцию RMSE2, как указано в цикле. Для примера , по первой итерации, я хочу, чтобы индексы 1 были в числе числа столбцов в привязке, которые будут использоваться. Затем для следующей итерации Я хочу, чтобы первый индекс был на 1 больше, чем предыдущая итерация закончилась и продолжалась до номера, равного числу столбцов в следующем сообщении . Я просто не знаю, выполнит ли то, что я написал, .
И наконец, я хочу сохранить каждый из этих результатов в векторе yearerrors, а затем получить к нему доступ после этого.
Большое спасибо!
Вы можете сохранить много работы, поместив ваши данные в их собственную папку и установив рабочий каталог там, а затем зациклив на 'for (i в list.files()) {}' ... просто мысль на части 1 – Seth
Привет, вы можете взглянуть на '? As.character' и' paste0'. Кроме того, если вы хотите объединить два отдельных диапазона, обязательно используйте 'c()', как в 'c (1800: 1850, 2003: 212)' –
'(1988: 1999, 2000: 2006)' недействительно, он должен быть 'c (1988: 1999, 2000: 2006)' – Chase