У меня есть несколько векторов в функции одинаковой длины (2000). Я хочу проверить с помощью оператора if, выполняется ли какое-либо условие в одном векторе, а затем код должен выполнить несколько вычислений с записями из других векторов той же строки. До сих пор я не мог решить это ни с помощью обычного оператора if, ни с помощью функции ifelse. Это может быть решено с помощью цикла, но, поскольку у меня есть 2000 наблюдений, это приведет к длительному времени выполнения кода - чего я хотел бы избежать.
Мой код выглядит так:
function1 = function(vec1,vec3,vec4,vec5){
ifelse(vec5 < 20,
# Calculations follow which should be executed when the statement is true
# The row used for vec1 and vec3 should be the same as the row which got
# checked for vec5
a <- vec1 * 2 * vec3
b <- vec1 * 4
c <- cbind(a,b)
d<- apply(c, 1, FUN=min),
# Now should be the calculations if the if-statement is false
# Again, the row used for vec1, vec3 and vec 4 should be the same as the row
# which got checked for vec5
a <- vec1 * 2 * vec3
b <- vec1 * 4
c <- cbind(a,b)
d1<- apply(c, 1, FUN=min)
a2 <- vec1 * 1.5 * vec4
b2 <- vec1 * 4
c2 <- cbind(a2,b2)
d2<- apply(c2, 1, FUN=min)
d = d1 + d2) # end of ifelse
return(d)
}
# For convenience lets just assume the vectors are of length 3
vec1 <- c(100,150,120)
vec3 <- c(12,20,28)
vec4 <- c(42,48,43)
vec5 <- c(18,17,25)
d <- function1(vec1,vec3,vec4,vec5)
# d should be a vector of length 3 as well with outcome 400,600,960 if I calculated correctly by hand
Этот код не выполняется, так как R, кажется, ожидает только одну строку кода после vec5 <20 вместо всех различных вычислений. Как я могу решить эту проблему? Спасибо за помощь! </p>