Apologies, I was using top = 0.0001 I had looked at browser and did show notconverged = NA. But I couldn't understand why it worked for one and not the other?
On Friday, 23 December 2011, jim holtman <jholt...@gmail.com> wrote: > Does this look similar to the error you are getting: > >> while(NA == TRUE) 1 > Error in while (NA == TRUE) 1 : missing value where TRUE/FALSE needed > > SO 'notconverged' is probably equal to NA. BTW, what is the value of > 'tol'; I do not see it defined. So when computing 'notconverged' you > have generated an NA. You can test it to see if this is true. > > You can use the following command: > > options(error=utils::recover) > > and then learn how to use the 'browser' to examine variables when the > error occurs. > > On Fri, Dec 23, 2011 at 5:44 AM, Michael Pearmain > <michael.pearm...@gmail.com> wrote: >> Merry Xmas to all, >> >> I am writing a function and curiously this runs sometimes on one data set >> and fails on another and i cannot figure out why. >> Any help much appreciated. >> >> If i run the code below with >> data <- iris[ ,1:4] >> The code runs fine, but if i run on a large dataset i get the following >> error (showing data structures as matrix is large) >> >>> str(cluster.data) >> num [1:9985, 1:811] 0 0 0 0 0 0 0 0 0 0 ... >> - attr(*, "dimnames")=List of 2 >> ..$ : NULL >> ..$ : chr [1:811] "1073949105" "1073930585" "1073843224" "1073792624" ... >> #(This is intended to be chr) >>> str(iris) >> 'data.frame': 150 obs. of 5 variables: >> $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... >> $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... >> $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... >> $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... >> $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 >> 1 1 1 ... >>> str(as.matrix(iris[,1:4])) >> num [1:150, 1:4] 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... >> - attr(*, "dimnames")=List of 2 >> ..$ : NULL >> ..$ : chr [1:4] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" >> >> n.cols <- ncol(data) >> n.rows <- nrow(data) >> X <- as.matrix(data) >> stepsize <- 0.05 >> c1 <- (2 * pi) ** (n.cols / 2) >> c2 <- n.rows * (smoothing ** (n.cols + 2)) >> c3 <- n.rows * (smoothing ** n.cols) >> >> Kexp <- function(sqs){ >> return (exp((-1 * sqs) / (2 * smoothing ** 2))) >> } >> >> FindGradient <- function(x){ >> XmY <- t(x - t(X)) >> sqsum <- rowSums(XmY * XmY) >> K <- sapply(sqsum, Kexp) >> dens <- ((c1 * c3) ** -1) * sum(K) >> grad <- -1 * ((c1 * c2) ** -1) * colSums(K * XmY) >> return (list(gradient = grad, >> density = dens)) >> } >> >> attractors <- matrix(0, n.rows, n.cols) >> densities <- matrix(0, n.rows) >> >> >>> density.attractors <- >> sapply(rep(1:n.rows), function(i) { >> notconverged <- TRUE >> # For each row loop through and find the attractor and density value. >> x <- (X[i, ]) >> iters <- as.integer(1) >> # Run gradient ascent for each point to obtain x* >> while(notconverged == TRUE) { >> find.gradient <- FindGradient(x) >> next.x <- x + stepsize * find.gradient$gradient >> change <- sqrt(sum((next.x - x) * (next.x - x))) >> notconverged <- ifelse(change > tol, TRUE, FALSE) >> x <- next.x >> iters <- iters + 1 >> } >> >> # store the attractor and density value >> return(c(densities[i, ] <- find.gradient$density, >> attractors[i, ] <- x)) >> }) >> >> Error in while (notconverged == TRUE) { : >> missing value where TRUE/FALSE needed >>> >> >> Any help would be great >> >> Mike >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. > > > > -- > Jim Holtman > Data Munger Guru > > What is the problem that you are trying to solve? > Tell me what you want to do, not how you want to do it. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.