ternary operator를 정의해버리는데 코드를 봐도 모르겠다. 세상엔 참 대단한 사람들이 많은듯.
http://stackoverflow.com/a/8790269/766330
(결론적으로 나는 그냥 ifelse()쓰기로 했음 ㅋㅋㅋ)
`?` <- function(x, y) {
xs <- as.list(substitute(x))
if (xs[[1]] == as.name("<-")) x <- eval(xs[[3]])
r <- eval(sapply(strsplit(deparse(substitute(y)), ":"), function(e) parse(text = e))[[2 - as.logical(x)]])
if (xs[[1]] == as.name("<-")) {
xs[[3]] <- r
eval.parent(as.call(xs))
} else {
r
}
}
assign(eg. )하는 데 bracket을 치는 수고를 감내할 수 있다면,
그러니까 아래와 같은 동작을 감내할 수 있다면
> y <- 1 ? 2*3 : 4
[1] 6
> y
[1] 1
> y <- (1 ? 2*3 : 4)
> y
[1] 6
더 간단하게,
`?` <- function(x, y)
eval(
sapply(
strsplit(
deparse(substitute(y)),
":"
),
function(e) parse(text = e)
)[[2 - as.logical(x)]])
댓글 없음:
댓글 쓰기