2016-02-19 3 views
1

Я пытаюсь написать следующую функцию:Как присвоить значение вектора на основе логического выражения в R

f <- function(q, r) { 
    for(i in seq(from = (1 - r), to = (r - 1), by = 1)){ 
    s <- r + i; 
    if (q %% s == 0) { 
    here(s) 
    } 
    } 
} 

Однако там, где у меня есть «здесь,» Я хотел бы эти значения s, которые соответствуют критерию, указанному выше над ним выражением «если», чтобы я мог выполнять операции над ним (принимать значения max и min и еще что-то), то есть вектор вида:

v < - c (те значения s, которые соответствуют критерию, указанному в заявлении if)

Я уверен, что это относительно прост, но это первая функция, которую я пытался написать в R, так что медведь со мной, если позволите. Благодарю.

ответ

1

Из того, что я понимаю в вашем коде, вы хотите создать вектор от (1-r+r) до (r-1+r), а затем, если значения этого вектора делятся на q, вы хотите применить к ним функцию.

Я создал вектор только чисел, которые удовлетворяют условию (путем подстановки с помощью вектора TRUE/FALSE), а затем применяют функцию только к тем, которые удовлетворяют условию.

Надеюсь, этот код правильно интерпретирует вашу функцию.

f <- function(q, r) { 
    s <- seq(1, 2*r-1, by=1) 
    ind <- ifelse(q %% s == 0, TRUE, FALSE) 
    result <- here(s[ind]) 
    return(result) 
} 
+1

Это было! Благодарю. – thisisourconcerndude

Смежные вопросы