Я пытаюсь написать вложенный цикл for в R, но сталкиваюсь с проблемами.Я исследовал как можно больше, но не могу найти (или понять) нужную мне помощь.Я довольно новичок в R, поэтому любые советы по этому циклу будут оценены, или, если есть более простой и элегантный способ!
Я создал файл дневных температур для многих мест (я будуназывать их сайтами), а столбцы файлов настраиваются следующим образом:
год месяц день unix_time site_a site_b site_c site_d ... включено и включено
для каждого сайта (в каждом столбце),Я хочу просмотреть значения температуры и создать новые столбцы (или новый фрейм данных) с числом (физиологической скоростью), которое соответствует диапазону этих температур.(например, температуры менее 6,25 градусов имеют скорость -1,33, температуры от 6,25 до 8,75 имеют скорость 0,99 и т. д.).Я создал цикл, который делает это для одного столбца данных.Например:
for(i in 1:dim(data)[1]){<br>
if (data$point_a[i]<6.25) data$rate_point_a[i]<--1.33 else<br>
if (data$point_a[i]>=6.25 && data$point_a[i]<8.75) data$rate_point_a[i]<-0.99 else<br>
if (data$point_a[i]>=8.75 && data$point_a[i]<11.25) data$rate_point_a[i]<-3.31 else<br>
if (data$point_a[i]>=11.25 && data$point_a[i]<13.75) data$rate_point_a[i]<-2.56 else<br>
if (data$point_a[i]>=13.75 && data$point_a[i]<16.25) data$rate_point_a[i]<-1.81 else<br>
if (data$point_a[i]>=16.25 && data$point_a[i]<18.75) data$rate_point_a[i]<-2.78 else<br>
if (data$point_a[i]>=18.75 && data$point_a[i]<21.25) data$rate_point_a[i]<-3.75 else<br>
if (data$point_a[i]>=21.25 && data$point_a[i]<23.75) data$rate_point_a[i]<-1.98 else<br>
if (data$point_a[i]>=23.75 && data$point_a[i]<26.25) data$rate_point_a[i]<-0.21<br>
}
Приведенный выше код дает мне новый столбец с именем "rate_site_a", в котором указаны мои физиологические показатели.У меня возникли проблемы с вложением этого цикла в другой цикл, который проходит через все столбцы.Я пробовал такие вещи, как:
for (i in 1:ncol(data)){
#for each row in that column
for (s in 1:length(data)){
if ([i]<6.25) rate1[s]<--1.33 else ...
Наверное, я не знаю, как заставить выражение «если еще» ссылаться на правильные места.Я знаю, что не могу добавить столбцы «скорость» в существующий фрейм данных, так как это увеличит мой ncol по мере прохождения цикла, поэтому нужно поместить их в другой фрейм данных (хотя не думаю, что это мойГлавная проблема).У меня будет много, много точек для проработки, и я бы предпочел не делать их по одному, поэтому моя попытка вложенного цикла.
Любая помощь будет высоко ценится.Вот ссылка на некоторые примеры данных, если это полезно.http://dl.dropbox.com/u/17903768/AVHRR_output.txt Заранее спасибо!