我有一個簡單的問題:我有兩個函數。他們都使用if if else
if(...) {expression}
if(...) {expression}
if(...) {expression}
代替
if(...) {expression}
else{
if(...) {expression}
else {expression}
}
但只有兩部作品之一。
第一個完美的作品:
test.1 <- function (y) {
if(y == 1){z <- 10}
if(y == 2){z <- 20}
if(y == 5){z <- 50}
return(z)
}
第二個不工作:
df.1 <- data.frame(A = 1:3)
df.2 <- data.frame(A = 4:6)
df.3 <- data.frame(A = 7:9)
test.2 <- function (num) {
x <- with(if(num == 1){df.1}
if(num == 2){df.2}
if(num == 3){df.3}, {sum(A)})
return(x)
}
我需要使用如果爲了獲得第二個功能工作其他表達式:
test.2 <- function (num) {
x <- with(if(num == 1){df.1}
else {if(num == 2){df.2}
else {df.3}
}, {sum(A)})
return(x)
}
我真的不明白爲什麼這個多重if語句在第一種情況下工作,但不在t中他第二個!?
你有沒有采取如果出x < - 部分。 因此,如果設置了一個變量,然後您在x < - 與部分使用? –
是的,我已經嘗試過。它可以工作,但在我的真實代碼中,with(...)部分有200行代碼,這意味着如果我這樣做,我可以獲得600行代碼而不是200行。這就是爲什麼我想插入if在()內部的正確位置。 –
最根本的問題是你的第二個函數不是任何類似於正確的R語法的東西。你基本上要求它爲if(num == 1){df.1} if(num == 2){df.2} if(num == 3){df.3},{sum( A)})'即兩個參數與(),這只是在這種情況下的垃圾。改用'switch'。 'if'的設計目的不是爲了返回值,所以{}中的data.frames會打印出來,而不是像我想象的那樣分配給'x'。 –