title: Vectorizing this function in R
body: <p>Hi so I have the following function: </p>
  
  <pre><code>kde.cv = function(X,s)    {
    l = length(X)
  
    log.fhat.vector = c()
    for (i in 1:l) {
      current.log.fhat = log ( kde(X[i],X[-i],s) )
      log.fhat.vector[i] = current.log.fhat
    }
  
    CV.score = sum(log.fhat.vector)
  
    return(CV.score)
  }
  </code></pre>
  
  <p>I'd like to vectorize this without using any for loops or apply statements, can't seem to get around doing so. Help would be appreciated. Thanks. </p>
  
  <p>EDIT: Given the responses, here are my answers to the questions posed. </p>
  
  <p>Given requests for clarification, I will elaborate on the function inputs and on the user defined function inside the function given. So X here is a dataset in the form of a vector, specifically, a vector of length 7 in the dataset I used as an input to this function. The X I used this function for is c(-1.1653, -0.7538, -1.3218, -2.3394, -1.9766, -1.8718, -1.5041). s is a single scalar point set at 0.2 for the use of this function. kde is a user - defined function that I wrote. Here is the implementation:  </p>
  
  <pre><code>kde = function(x,X,s){
    l = length(x)   
    b = matrix(X,l,length(X),byrow = TRUE)
    c = x - b 
    phi.matrix = dnorm(c,0,s)
    d = rowMeans(phi.matrix)
  
    return(d)
  }
  </code></pre>
  
  <p>in this function, X is the same vector of data points used in kde.cv. s is also the same scalar value of 0.2 used in kde.cv. x is a vector of evaluation points for the function, I used seq(-2.5, -0.5, by = 0.1).</p>