Я знаю, что смогу найти это здесь, но у меня проблемы с R как новичком.Перенаправление туда, где можно найти ответ, также было бы очень полезно для меня, так как я рассмотрел множество других функций применения, но не понял их.У меня есть фрейм данных 'y', где я хочу перебрать строки и использовать эти координаты строк, чтобы получить значение из другого фрейма данных 't'.В Python вы можете перебирать строки и использовать индекс строки.Я также могу сделать это в R сейчас, но это очень медленно:
for (i in 1:nrow(y)) {
y$pvalue[i] <- min(t$pvalue[t$Start <= y$Start[i] & t$Stop >= y$Stop[i]])
}
Как можно ускорить это с помощью функции, такой как Apply?Синтаксис меня действительно смущает.
Некоторые игровые данные:
t <- data.frame("Chromosome" = c(1,1,1,1,1,1,1), "Start" =
c(0,5,10,15,20,25,30), "Stop" = c(10,15,20,25,30,35,40),"pvalue" = c(0.1,0.4,0.3,0.8,0.6,0.3,0.1))
my_list <- union(t$Start, t$Stop)
y <- data.frame('Start' =my_list[1:length(my_list)-1], "Stop" = my_list[-1])
Итак, у нас есть перекрывающиеся координаты, я пытаюсь получить наименьшее значение из t, которое соответствует ячейкам в 'у '.
Так получится как:
y <- data.frame('Start' =my_list[1:length(my_list)-1], "End" = my_list[-1], "pvalue" = c(0.1,0.1,0.3,0.3,0.6,0.3,0.1,0.1))