使用 map() 我撰寫了一個簡單的函式,如果 x 為 1,則應該回傳“是”,如果 x 為 2,則回傳“否”,如果 x 為 3,則回傳“可能”。
map(
.x = c(1,2,3),
.f = function(x) {
if (x==1) y= 'yes'
if (x==2) y='no'
if (x==3) y='maybe'})
我希望得到一個包含“是”、“否”、“也許”的串列,是的,我得到了:
[[1]]
NULL
[[2]]
NULL
[[3]]
[1] "maybe"
所以似乎每個 if() 都被評估并且只回傳最后一個,當 x 為 1 或 2 時為 NULL。我的問題是為什么?我希望 if() 在全球環境中表現得像:
x = 1
if (x==1) y='yes'
if (x==2) y='no'
if (x==3) y='maybe'})
y
[1] "yes"
uj5u.com熱心網友回復:
您正在為y3 次分配一個新值。用于else保持使其成為一種表達方式。
map(
.x = c(1,2,3),
.f = function(x) {
if (x==1) y = 'yes'
else if (x==2) y = 'no'
else if (x==3) y = 'maybe'})
#[[1]]
#[1] "yes"
#
#[[2]]
#[1] "no"
#
#[[3]]
#[1] "maybe"
uj5u.com熱心網友回復:
R 是一種基于運算式的語言。運算式有價值。(幾乎)一切都是一種表達。這意味著一切最終都有一個價值。映射中的函式體最終只有一個值,即最后一個 if 陳述句。
所以添加else,例如
map(
.x = c(1, 2, 3),
.f = function(x) {
if (x == 1)
y = 'yes'
else if (x == 2)
y = 'no'
else if (x == 3)
y = 'maybe'
}
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/471628.html
上一篇:如何在多行上使用if條件?
