То, что я пытаюсь сделать, кажется, очень просто, но я просто не могу обойти его, и я искал похожие вопросы, но все еще не может его решить ... скорее всего, это глупый вопрос, но вот он идет ...R: передать функцию с несколькими параметрами в строки кадра данных, используя только некоторые столбцы
У меня есть один столбец, в котором указаны позиции и 2 других, которые начинаются и заканчиваются в списке, просто нужно проверить, находится ли позиция в пределах диапазон определяется началом и концом, для каждой строки ...
ММВХ:
within.range <- function(pos, start, end){
if (pos>=start & pos<=end){
return(TRUE)
} else{
return(FALSE)
}
}
my.df <- data.frame(gene=c("A","B","C","D","E"), chr=c(1,2,3,4,5), pos=as.numeric(c(34,23,6,46,765)), start=as.numeric(c(45,15,2,32,765)), end=as.numeric(c(86,38,9,41,767)))
my.df
Как передать функцию в фрейм данных? Моя лучшая попытка:
apply(my.df[,c("pos","start","end")], 1, within.range, start=my.df$start, end=my.df$end)
Но это, очевидно, неправильно ... Может быть, есть целый лучший способ сделать то же ... Спасибо!
в вашей функции, вам не нужно, если заявление, как вы просите ", если TRUE, возвратного (TRUE) еще retrun (FALSE) ", поэтому ваша функция может быть уменьшена до только' pos> = start & pos <= end'. Ваш оператор 'apply' не может работать, потому что вы вводите вектор длины 5 для начала и конца, где каждый вызов вашей функции нуждается в неумеренном количестве. – Cath