如何从R中的IF语句返回列表?
如何从计算结果返回列表?列表的长度必须与第一个参数的长度相同如何从R中的IF语句返回列表?,r,R,如何从计算结果返回列表?列表的长度必须与第一个参数的长度相同 circlecalc <- function(var1,R){ if (is.numeric(R) && min(R) >=1){ (toupper(var1)=='AC') pi*R^2 } else if (toupper(var1)=='CC') { 2*pi*R } else if (toupper(var1)=='VS') { 4/3*pi*R^3 }
circlecalc <- function(var1,R){
if (is.numeric(R) && min(R) >=1){
(toupper(var1)=='AC')
pi*R^2
} else if (toupper(var1)=='CC') {
2*pi*R
} else if (toupper(var1)=='VS') {
4/3*pi*R^3
} else if (toupper(var1)=='AS') {
4*pi*R^2
} else stop ("not valid")
}
circlecalc=1){
(toupper(var1)='AC')
pi*R^2
}else if(toupper(var1)='CC'){
2*pi*R
}else if(toupper(var1)='VS'){
4/3*pi*R^3
}else if(toupper(var1)=='AS'){
4*pi*R^2
}否则停止(“无效”)
}
当前方法的问题是常规的if
和else
没有矢量化。当从矢量化的dplyr
包中选择时,您可以尝试使用case\u
library(dplyr)
circlecalc <- case_when(
is.numeric(R) && min(R) >= 1 && toupper(var1) == 'AC' ~ pi*R^2,
toupper(var1) == 'CC' ~ 2*pi*R,
toupper(var1) == 'VS' ~ 4/3*pi*R^3,
toupper(var1) == 'AS' ~ 4*pi*R^2,
TRUE ~ "not valid"
)
库(dplyr)
circlecalc=1&&toupper(var1)='AC'~pi*R^2,
toupper(var1)='CC'~2*pi*R,
toupper(var1)='VS'~4/3*pi*R^3,
toupper(var1)='AS'~4*pi*R^2,
TRUE~“无效”
)