我正在构建一个闪亮的应用程序,在一个selectInput小部件中,我希望用户可以在选项之间进行选择:
根据用户的输入和正确的功能,情节将发生变化:
if HRR -> return "HRR"
if LRR -> return "LRR"
if Both -> return c("HRR", "LRR")我只想用一行来应用这个条件。我试过使用ifelse,但它返回一个长度为输入的对象:
ifelse(option == "Both", c("HRR", "LRR"), option)但只有在选定的选项都是"HRR“时,才会输出”HRR“。
谢谢!
发布于 2022-11-14 02:04:10
这是因为ifelse()只返回第一个元素(因为它是一个矢量化函数-它需要从一个数字列表中输入)。如果您只在option只是一个值时才会使用它,那么您可以只使用一个普通的If语句。
option <- "Both"
if(option == "Both") c("HRR", "LRR") else option
[1] "HRR" "LRR如果您想将它与向量输入一起使用,只需将上面的语句放在lapply()中即可。
option <- c("Both", "LRR", "HRR")
lapply(option, function(x) if(x == "Both") c("HRR", "LRR") else x)
[[1]]
[1] "HRR" "LRR"
[[2]]
[1] "LRR"
[[3]]
[1] "HRR"https://stackoverflow.com/questions/74425919
复制相似问题