在R函数中输入值的长度未知时管理if语句

时间:2019-05-13 20:59:37

标签: r function loops if-statement lapply

我有两个R函数。 第一个一个输出data.frame。此输出的第一列在 second 函数中使用。

具体来说, second 函数采用参数long,该参数可以是任何数字矢量,例如任意长度的2, 2, 3。然后,该函数从第一个函数的输出data.frame的第一列中输出相应的元素。

例如,如果long = c(1, 3, 2),则第二个函数将第一个函数输出的第一个元素分配给1,如果2将第一个函数的第二个元素分配给{{1} }等。

问:参数2可以是任意长度,如何管理所需的long语句? (请参见下面的第二个功能)?

ifelse

1 个答案:

答案 0 :(得分:0)

您不需要长时间的ifelse()函数调用,而是想使用索引。在您的示例中,这可能很简单

r <- g[long]

如果您需要将long值转换为索引,例如,将发生更复杂的情况。对应于类似

r <- ifelse(long == 1, g[12], ifelse(long == 2, g[3],  ...

现在,您需要首先转换long值(1变为12,2变为3,依此类推)。如何做在很大程度上取决于翻译是否有模式。假设没有模式,您只想设置一个命名向量:

translations <- c("1" = 12, "2" = 3, ...)

并使用

r <- g[translations[as.character(long)]]

这里需要as.character(),因为向量元素的名称始终是字符串。