2014-07-23 5 views
-4

ifelse 명령을 구현하는 데 문제가 있습니다. 나는 단지 긍정 (또는 0) 출력만을 반환하고자합니다. 예를 들어, 다음 방정식 y=-50+(x^2)에서 y<=0 일 때 y0을 반환해야합니다. y>0 때 적절한 출력 값을 반환해야합니다. 나는 다음과 같은 코드를 구현할 때 :함수에서 IFELSE 사용

test = function (x) 50+(x^2) 
if(test <= 0) test <- 0 else y <-50+(x^2) 

을 항상 얻을 0

답변

1

하나의 솔루션

test = function(x) ifelse(0>(-50+x^2), 0, -50+x^2) 

test(10) 
[1] 50 
test(100) 
[1] 9950 
+0

그냥 y를 제거하십시오. – Vlo

+0

답장을 보내 주셔서 감사합니다. 꽤 초보적인 질문이었습니다. 환호 – Catarino

3

가능한 솔루션 :

test <- function(x) (x^2 > 50) * (x^2 - 50) 

test(5) 
# [1] 0 
test(10) 
# [1] 50 

또 다른 방법 :

test2 <- function(x) pmax(0, x^2 - 50) 
+0

두 번 계산하는 대신 결과를 저장하고 테스트하는 것이 더 저렴할 것입니다. – Roland

+0

@Roland 전적으로 동의하지만 짧은 기능을 원했습니다. –