我正在嘗試在 R 中使用 ifelse 制作一個矢量化函式,但我的代碼僅采用矢量的第一個元素。例如,如下面的代碼所示,當我將“y”分配給 Years 引數時,代碼沒有給出向量輸出,而是給出了第一個元素的結果。
有人可以告訴我如何矢量化輸出嗎?
salaryCAl2 <- function(Years=1, Department){
ifelse(Department=="Sales",Years * 10000 * 1.2,
ifelse(Department == "Data", Years*12000*1.3, Years*13000*1.15))
}
y <- c(2,3)
salaryCAl2(y, "HR")
uj5u.com熱心網友回復:
您可以使用switchwhich 是矢量化的,它通常是嵌套 ifelse 陳述句處理不同情況的更好選擇。
salaryCAl2 <- function(Years = 1, Department) {
switch(
Department,
"Sales" = Years * 10000 * 1.2,
"Data" = Years * 12000 * 1.3,
Years * 13000 * 1.15
)
}
y <- c(2,3)
salaryCAl2(y, "HR")
# [1] 29900 44850
uj5u.com熱心網友回復:
您的函式可以通過多種方式進行矢量化。一種方法是創建一個計算單年薪水的函式,并將salaryCal2此函式應用于每一年的Years資料。
salaryCAl2a<- function(Years=1, Department){
single_year_cal <- function(ayear){
ifelse(Department=="Sales",ayear * 10000 * 1.2,
ifelse(Department == "Data", ayear*12000*1.3, ayear*13000*1.15))
}
unlist(lapply(Years, single_year_cal))
}
salaryCAl2a(y, "HR")
#[1] 29900 44850
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/474990.html
