On 30-11-2012, at 16:08, faeriewhisper wrote: > Hi guys! > I have to compute something and i don't know what i'm doing wrong. my code > is a bit complex, but imagine that is something like this: > > a = c(1,2,3,4) > ia = length(a) > > x = seq(1,100,length=0.1) > ib = length(x) > > int1 = numeric(ib) > b = numeric(ib) > > for(j in 1:ia) { > H = function(x) {sin(x + a[j])} > for(i in 1:ib) { > int = integrate(H, lower = 0, upper = x[i]) > int1[i] = int[1] > b[i] = 1 + a[i] > } > end > int1 = unlist(int1) > int2 = int1*b > ss[j] = sum(int2) > } > end >
What are you doing? What's the "end" doing in your code in two places. end is a function to extract and encode the last observation of a time series object. See ?end It makes absolutely no sense to put them in your code. Remove them immediately. You haven't declared ss to be a vector. So before the start of the j loop insert ss <- numeric(ia) And simplify your code: ss <- numeric(ia) for(j in 1:ia) { H = function(x) {sin(x + a[j])} for(i in 1:ib) { int = integrate(H, lower = 0, upper = x[i]) int1[i] = int$value b[i] = 1 + a[i] } ss[j] = sum(int1*b) } ss And more simplification is possible by eliminating b, which I leave to you. Berend ______________________________________________ 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.