Написание функции R с помощью if enviornment

Я пытаюсь написать функцию, которая делает разные вещи, в зависимости от второго аргумента. Но я все время получаю ошибку. В зависимости от размера матрицы, функция должна выполнять разные задачи. Вот пример

x<-cbind(X1,X2,X3)

function<-function(x,hnrstr){
  if (hnrstr<-1){ 
    x<-data.frame(X1=x[1],X2=x[2],X3=x[3])
    y<-x 
    y[ ,"X2","X3"]<- gsub(" {2, }"," ",y[ ,"X2","X3"])       
  }

  if (hnrstr<-2){ 
    x<-data.frame(X1=x[1],X2=x[2])
    P<-x 
  }  
  if (hnrstr<-1){
    x<-y
  }
  if (hnrstr<-2){
    x<-P  
  }
  return(x)
}

apply(x,c(3,3), function(x,1))

Я получаю ошибку:

Error in drop && !has.j : invalid 'x' type in 'x && y'

Ответы на вопрос(1)

Ваш ответ на вопрос