使用Ifelse条件而不使用Else

时间:2016-01-02 17:29:51

标签: r flextable

我有一个Flextable df并且具有以下条件:

df = setFlexTableBackgroundColors(df, i = 1, j = 5:15,
colors = ifelse(test$object == 0,"white"))

但是它给了我以下错误消息:

Error in ifelse(test$object == 0, "white") :
argument "no" is missing, with no default"

显然这个软件包需要这样的东西:ifelse(test$object == 0, "white", "black"),因为那时条件正常。

但是我在不同颜色(j = 5:15)的行上使用此条件,如果条件不满足,我不希望它们转为"black"

有人有任何提示我如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您应该为函数提供它期望的默认参数。在这种特殊情况下,您可以这样做:

df = setFlexTableBackgroundColors(df, i = 1, j = 5:15,
  colors = ifelse(test$object == 0,"white","gray"))

在更一般的情况下,可以使用formals()获取默认值:

defaultColors = formals(setFlexTableBackgroundColors)$colors
df = setFlexTableBackgroundColors(df, i = 1, j = 5:15,
  colors = ifelse(test$object == 0,"white",defaultColors))

例如:

ff <- function(x, y=5, z=7) {}
formals(ff)$y     # Returns 5