如何从计算结果中返回列表?该列表的长度必须与第一个参数的长度相同。
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")
}
答案 0 :(得分:1)
您当前方法的问题是常规if
和else
没有向量化。您可以尝试使用case_when
软件包中的dplyr
,它是矢量化的。
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"
)