我遇到以下问题 - 我有一个向量,填充了用户输入,我想使用自定义函数对其执行某些操作。我想使用一个通用函数,其方法根据输入向量的长度而不同。编写一长串 if 语句会更慢、更笨拙(如果向量长度 = x 执行此操作,否则 if = y 执行此操作,等等)。
所以,我的问题是,在不使用 if 语句检查长度的情况下,根据用户输入向量对象的长度将类分配给用户输入向量对象的最佳方法是什么?我可以创建一个查找表,程序用它来根据向量长度分配一个类,只需一次检查而不是许多 if 语句吗?
我可以将其实现为一系列 if 循环:
input<-scan(what=numeric())
if (length(input)==1){
class(input)<-"classone"
}
else{
if (length(input)==2){
class(input)<-"classtwo"
}
else{
if... et cetera
}
但这显然非常慢,并且会产生巨大的非模块化代码块。
您可以创建类名称的向量并使用
length(input)
作为映射名称的索引:
cnames <- c('classone', 'classtwo', 'classthree', 'classfour')
idx <- length(input)
class(input) <- cnames[idx]