[R] Calculate correctly, but gives an error message

Dimitris Rizopoulos dimitris.rizopoulos at med.kuleuven.ac.be
Tue Jun 29 10:38:34 CEST 2004


Hi Matthias,

I think you just need,

lapply(split(b, a), sum, na.rm=TRUE)

I hope this helps.

Best,
Dimitris

----
Dimitris Rizopoulos
Doctoral Student
Biostatistical Centre
School of Public Health
Catholic University of Leuven

Address: Kapucijnenvoer 35, Leuven, Belgium
Tel: +32/16/396887
Fax: +32/16/337015
Web: http://www.med.kuleuven.ac.be/biostat/
     http://www.student.kuleuven.ac.be/~m0390867/dimitris.htm



----- Original Message ----- 
From: "TEMPL Matthias" <Matthias.Templ at statistik.gv.at>
To: <R-help at stat.math.ethz.ch>
Sent: Tuesday, June 29, 2004 10:27 AM
Subject: [R] Calculate correctly, but gives an error message


> Hi!
>
> I will calculate sum´s in the following way:
> E.g.:
>
>
> a <- rpois(100,20)
> b <- rpois(100,5)
>
> x <- data.frame(cbind(a,b))
>
> # the sum´s should be calculated based on a.
>
> attach(x)
>
> sort.nace <- unique(sort(x[,1]))
>
> sum1 <- matrix(ncol=1, nrow=length(sort.nace))
>
> # I calculate the sum of all values of b, which have the same
category in a. Eg.:
>
> sum1[1,] <- sum(subset(x, a==sort.nace[1], select=b), na.rm=TRUE)
>
> # or:
>
> sum1[5,] <- sum(subset(x, a==sort.nace[5], select=b), na.rm=TRUE)
>
> # all is ok.
> # but when I do it in a loop, I get an error message.
>
> sum1 <- matrix(ncol=1, nrow=length(sort.nace))
> for(i in 1:length(nace)){
> sum1[i,] <- sum(subset(x, a==sort.nace[i], select=b), na.rm=TRUE)
> }
> #Error in Summary.data.frame(..., na.rm = na.rm) :
> #        only defined on a data frame with all numeric or complex
variables
>
> # but sum1 was correct calculated(!):
>
> # sum1
> #       [,1]
> #  [1,]    3
> #  [2,]    4
> #  [3,]    8
> #  [4,]    7
> #  [5,]   41
> #  [6,]   57
> #  [7,]   38
> #  [8,]   15
> #  [9,]   44
> # [10,]   72
> # [11,]   57
> # [12,]   27
> # [13,]   12
> # [14,]   24
> # [15,]   29
> # [16,]   16
> # [17,]   19
> # [18,]    3
> # [19,]    4
> # [20,]    8
> # [21,]    6
>
> The variables of x are of class numeric.
> My function, which should calculate these sum´s, does not work,
because of this error.
>
> Can anybody please tell me, what I´m doing wrong?
>
> (I think it would be better to write a sapply instead of the loop,
but I have two functions (sum and subset) and it is very hard for me
to use the sapply here correctly)
>
> Thanks,
> Matthias
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html




More information about the R-help mailing list