Error in R: nonconformable arguments. Not true?

this is my code:

```    #define likelihood function (including an intercept/constant in the function.)
lltobit <- function(b,x,y) {
sigma <-  b[3]
y  <- as.matrix(y)
x <- as.matrix(x)
vecones <- rep(1,nrow(x))
x <- cbind(vecones,x)
bx <- x %*% b[1:2]
d <- y != 0
llik <- sum(d * ((-1/2)*(log(2*pi) + log(sigma^2) + ((y - bx)/sigma)^2))
+ (1-d) * (log(1 - pnorm(bx/sigma))))
return(-llik)
}

n <- nrow(censored) #define number of variables
y <- censored\$y #define y and x for easier use
x1 <- as.matrix(censored\$x)
x <-  cbind(rep(1,n),x1) #include constant/intercept
bols <- (solve(t(x) %*% x)) %*% (t(x) %*% y) #compute ols estimator (XX) -1 XY
init <- rbind(as.matrix(bols[1:nrow(bols)]),1) #initial values

init

tobit1 <- optim(init, lltobit, x=x, y=y, hessian=TRUE, method="BFGS")

```

where censored is my data table, including 200 (censored) values of y and 200 values of x.

Everything works, but when running the optim command, i get the following error:

```tobit1 <- optim(init, lltobit, x=x, y=y, hessian=TRUE, method="BFGS")
Error in x %*% b[1:2] : non-conformable arguments

```

I know what it means, but since x is a 200 by 2 matrix, and b[1:2] a vector of 2 by 1, what goes wrong? I tried transposing both, and also the initial values vector, but nothing works. Can anyone help me?