如果“a”和“b”不在R中,则使其长度相同 背景:

如果“a”和“b”不在R中,则使其长度相同 背景:,r,function,R,Function,假设我有一个函数,它要求参数的长度完全相同。但如果函数的用户为两个参数提供两个不等的长度: 问题 有没有可能R缩短了较长参数的长度,使其与较短参数的长度相同 作为一个示意图示例,假设参数a和b在函数sdf中必须具有相同的长度,请参见下文。但是我不小心把参数b的长度弄长了。R是否可以计算此处较短参数a的长度,然后使此处较长参数b的长度与a的长度相同 也许R可以从b的末端下降,使b的长度等于a sdf = function(a, b) { if(length(a) != length(b)){

假设我有一个函数,它要求参数的长度完全相同。但如果函数的用户为两个参数提供两个不等的长度:

问题 有没有可能R缩短了较长参数的长度,使其与较短参数的长度相同

作为一个示意图示例,假设参数a和b在函数sdf中必须具有相同的长度,请参见下文。但是我不小心把参数b的长度弄长了。R是否可以计算此处较短参数a的长度,然后使此处较长参数b的长度与a的长度相同

也许R可以从b的末端下降,使b的长度等于a

sdf = function(a, b) {

 if(length(a) != length(b)){ message("\n\tMake a and b have the same length equal")   
     
      } else {a + b}

  }

sdf(a = 2:5, b = 4:9)

假设A和B都是向量,可以像这样切掉较长向量的末端:

sdf = function(a, b) {
  if(length(b) > length(a)){
    b = b[1:length(a)]
  }
  else(if(length(a) > length(b)){
    a = a[1:length(b)]})
  return(a+b) #sample return operation
}



> sdf(a = 2:5, b = 4:9)
[1]  6  8 10 12


> sdf(a = 2:10, b = 3:7)
[1]  5  7  9 11 13
希望这能回答你的问题