1
2つのパラメータのリストがあり、1つのリストにはパラメータの値(以下の例ではparameters
)が含まれ、もう1つには各パラメータが取りうる列挙された値(parameters.enum
)がすべて含まれています。2つの異なるリストの要素を比較する
パラメータは必須ではないため、NULL
にすることができます。 parameters.enum
にすべてのパラメータが定義されていない場合、パラメータがparameters.enum
にない場合、このパラメータには制限された値はありません。各非NULL
parameter
におけるパラメータとparameters.enum
で定義された私は、彼らが有効な値をとるかどうかを確認したいために
parameters.enum <- list(a = c("a1", "a2"),
b = c("b1", "b2"),
c = "c1")
parameters <- list(a = "a1", #allowed
b = "a1", #not allowed
c = NULL, #allowed
d = "aaa") #allowed
。そうでない場合は、例:
'b' should be one of "b1", "b2"
のメッセージを表示します。
for (i in seq_along(parameters)) {
j <- which(names(parameters.enum) == names(parameters[i]))
if (length(j) != 0L && !is.null(parameters[[i]]) && !parameters[[i]] %in% parameters.enum[[j]]) {
cat("Parameter \'", names(parameters[i]), "\' should be one of ", paste0("\"", parameters.enum[[j]], "\"", collapse = ", "), sep = "")
}
}
しかし、私はこれを達成するために、より直接的かつエレガントな方法があるかもしれませんように、あなたが任意のアイデアを持っていない感じ:私は私が望むものを達成するためにループを使用して瞬間
?ありがとう!