我有两个R函数。 第一个一个输出data.frame
。此输出的第一列在 second 函数中使用。
具体来说, second 函数采用参数long
,该参数可以是任何数字矢量,例如任意长度的2, 2, 3
。然后,该函数从第一个函数的输出data.frame
的第一列中输出相应的元素。
例如,如果long = c(1, 3, 2)
,则第二个函数将第一个函数输出的第一个元素分配给1
,如果2
将第一个函数的第二个元素分配给{{1} }等。
问:参数2
可以是任意长度,如何管理所需的long
语句? (请参见下面的第二个功能)?
ifelse
答案 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()
,因为向量元素的名称始终是字符串。