2016-10-08 4 views
0

Я пытаюсь использовать оператор if для анализа количества введенных пользователем значений, больших или равных 70. Для каждого значения, которое они вводят больше (или равно) 70, я хочу, чтобы переменная totalFirst увеличивалась на 1. Однако я не уверен, как заставить оператор if анализировать каждое отдельное значение в векторе.Как анализировать каждое отдельное значение вектора в операторе if

код до сих пор:

totalFirst <- 0 

prompt <- "What were your second year module results?(space separated)" 
secondYearMark <- as.integer(strsplit(readline(prompt), " ")[[1]]) 
if (secondYearMark >= 70) totalFirst <- totalFirst + 1 
+0

Может 'totalFirst <- totalFirst + сумма (secondYearMark> = 70)'? Или, если вам нужно только вычислить один раз, а не увеличивать снова позже, тогда просто 'totalFirst <- sum (secondYearMark> = 70)' – dww

ответ

0

Самый простой способ заключается в использовании sum

prompt <- "What were your second year module results?(space separated)" 
secondYearMark <- as.integer(strsplit(readline(prompt), " ")[[1]]) 
totalFirst <- sum(secondYearMark >= 70) 
+0

Спасибо, и очень простое решение! – Jamie

0

Для того, чтобы получить пользовательский ввод более чем один раз, вы можете поместить readline внутри функции с именем f_getInput и просто называют эту функцию:

totalFirst <- integer(0)  
prompt <- "What were your second year module results?(space separated)" 
f_getInput <- function(prompt) return(as.integer(strsplit(readline(prompt), " ")[[1]])) 

totalFirst <- c(totalFirst, f_getInput(prompt)) 

Вы бежите в последней строке столько раз, сколько хотите. Наконец, вы будете иметь все пользовательские входы в векторе totalFirst. Для того, чтобы поймать, сколько раз будет число >=70 в введенный пользователем, просто сделать это:

sum(totalFirst >= 70) 

Если, например, totalFirst содержит 25, 33, 85, 64, 71, 70, делая это:

which(totalFirst >= 70) 

Вы знаете, что число >=70 вводится в 3-е, 5-е и 6-е время ввода.

0
totalFirst  <- 0  
prompt   <- "What were your second year module results?(space separated)" 
secondYearMark <- as.integer(strsplit(readline(prompt), " ")[[1]]) 
totalFirst  <- length(secondYearMark[secondYearMark >=70])