R 如何定义数据帧中的某些参数可能不被使用?

R 如何定义数据帧中的某些参数可能不被使用?,r,R,我有这个数据框: df <- data.frame(ref_ws = ref_ws, turb_ws = turb_ws, ref_wd = ref_wd, fcf = turb_ws/ref_ws, ref_fi = ref_fi, shear = shear, turbulence_i

我有这个数据框:

df <- data.frame(ref_ws = ref_ws,
                 turb_ws = turb_ws,
                 ref_wd = ref_wd,
                 fcf = turb_ws/ref_ws,
                 ref_fi = ref_fi,
                 shear = shear,
                 turbulence_intensity = turbulence_intensity,
                 inflow = inflow,
                 veer = veer)
变量
ref\u ws、turb\u ws、ref\u wd
是必需的,但其他变量是可选的

如果我们在函数中定义参数,可选的函数将为每个函数生成一个单独的绘图

例如,如果未使用
剪切
,我想继续,看看它是否可以生成下一个关于
湍流强度
的绘图,依此类推

目前,这是一个错误:

Error in data.frame(ref_ws = ref_ws, turb_ws = turb_ws,ref_wd = ref_wd,  : 
  argument "veer" is missing, with no default

如何将这些参数定义为可选参数?

Hadley建议使用
NULL
value作为默认参数,并在函数体中使用
is.NULL
test:

有时,您需要添加一个非常重要的默认值,这可能需要几行代码来计算。如果需要,可以使用missing()有条件地计算它,而不是在函数定义中插入该代码。但是,如果不仔细阅读文档,就很难知道哪些参数是必需的,哪些是可选的。相反,我通常将默认值设置为NULL,并使用is.NULL()检查是否提供了参数


我认为这是一个有用的建议,我个人经常使用它。

请与
dput(df)
共享一些数据。在函数定义中设置一个默认值,例如
函数(…,veer=NA)
。似乎我在创建数据帧时遇到了问题。我正在使用is.null()进行检查,但数据帧似乎不支持大小不同的向量(正在使用的向量的大小,未使用的向量的大小为零)@jogo此函数返回的是一个包含我可以生成的所有图的列表(取决于我们拥有的参数)。但定义veer=NA会导致此输出:
错误:提供给连续刻度的离散值
。NA是一个逻辑值并停止函数,因为我正在生成具有连续比例的绘图。如果某个参数为NA,我是否应该执行跳过部分代码的条件?@JoãoMachado Yes,您必须在函数中为
veer
处理值
NA
,并设置一个条件以避免意外结果。感谢您的建议。但是您是否使用if(is.null(argument))以及if是否为break?另外,我在创建数据帧时似乎遇到了问题。我正在使用is.null()进行检查,但似乎dataframe不支持大小不同的向量(正在使用的向量的大小为零,未使用的向量的大小为零)
is.null
不适用于
data.frame
等参数。对于这种类型的对象,您可以使用逻辑条件作为继承(data,“data.frame”)
Error in data.frame(ref_ws = ref_ws, turb_ws = turb_ws,ref_wd = ref_wd,  : 
  argument "veer" is missing, with no default