Re: [R] matrix manipulation with a for loop

2006-11-02 Thread Fabian Scheipl

Your for-loops aren't set up properly:

try 

for(i in 1:NCOL(F.zoo))

HTH, Fabian Scheipl


--

__
R-help@stat.math.ethz.ch 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.


[R] matrix manipulation with a for loop

2006-11-01 Thread antonio rodriguez
Hi,

Having a matrix F.zoo (6575,189) with NA's in some columns I'm trying to 
extract from each column the percent of days within an specific range, 
so I've wrote this procedure:

length(subset(F.zoo[,86],(F.zoo[,86]=5)  (F.zoo[,86]= 
9)))/(length(F.zoo[,86])-length(subset(F.zoo[,86],is.na(F.zoo[,86]*100

But to do this for each column (189) is pretty hard, so I want to write 
a function in order to perform this automatically, such I have the 
percent value corresponding to a specific column. I' tried these two 
formulas but I can't get it. I think the problem is how to set the 
initial values for the loop:

Formula1:

nnn-function(x){for (i in F.zoo[,i]){
print(length(subset(F.zoo[,i],(F.zoo[,i]=5)  (F.zoo[,i]= 
9)))/(length(F.zoo[,i])-length(subset(F.zoo[,i],is.na(F.zoo[,i]*100)
}
}

Formula 2:

H-t(matrix(1,189))

nnn-function(x){for (i in col(H){
print(length(subset(F.zoo[,i],(F.zoo[,i]=5)  (F.zoo[,i]= 
9)))/(length(F.zoo[,i])-length(subset(F.zoo[,i],is.na(F.zoo[,i]*100)
}
}

Thanks,

Antonio

__
R-help@stat.math.ethz.ch 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.


Re: [R] matrix manipulation with a for loop

2006-11-01 Thread Gabor Grothendieck
Try this where m is the matrix:

100 * colMeans(m  5  m  9, na.rm = TRUE)


On 11/1/06, antonio rodriguez [EMAIL PROTECTED] wrote:
 Hi,

 Having a matrix F.zoo (6575,189) with NA's in some columns I'm trying to
 extract from each column the percent of days within an specific range,
 so I've wrote this procedure:

 length(subset(F.zoo[,86],(F.zoo[,86]=5)  (F.zoo[,86]=
 9)))/(length(F.zoo[,86])-length(subset(F.zoo[,86],is.na(F.zoo[,86]*100

 But to do this for each column (189) is pretty hard, so I want to write
 a function in order to perform this automatically, such I have the
 percent value corresponding to a specific column. I' tried these two
 formulas but I can't get it. I think the problem is how to set the
 initial values for the loop:

 Formula1:

 nnn-function(x){for (i in F.zoo[,i]){
print(length(subset(F.zoo[,i],(F.zoo[,i]=5)  (F.zoo[,i]=
 9)))/(length(F.zoo[,i])-length(subset(F.zoo[,i],is.na(F.zoo[,i]*100)
 }
 }

 Formula 2:

 H-t(matrix(1,189))

 nnn-function(x){for (i in col(H){
print(length(subset(F.zoo[,i],(F.zoo[,i]=5)  (F.zoo[,i]=
 9)))/(length(F.zoo[,i])-length(subset(F.zoo[,i],is.na(F.zoo[,i]*100)
 }
 }

 Thanks,

 Antonio

 __
 R-help@stat.math.ethz.ch 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.


__
R-help@stat.math.ethz.ch 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.


Re: [R] matrix manipulation with a for loop

2006-11-01 Thread antonio rodriguez
Phil Spector escribió:
 Antonio -
When you're operating on each column of a matrix, you really should
 consider the apply() function, which was written for the task.  Also, 
 it's usually easier to count things in R by taking the sum of a logical
 expression, rather than the length of a subsetted vector.
Here's code that will solve your problem:

 apply(F.zoo,1,function(x)sum(x =5  x = 9)/sum(!is.na(x))*100)
Dear Phil,

The problem is that the columns have some missing values (NA's) so the 
result for:

apply(F.zoo,2,function(x)sum(x =5  x = 9)/sum(!is.na(x))*100) # yields:

X.1   X.2   X.3   X.4   X.5   X.6   X.7   X.8   X.9  X.10  X.11  X.12  X.13
   NANANANANANANANANANANA
NANA
 X.14  X.15  X.16  X.17  X.18  X.19  X.20  X.21  X.22  X.23  X.24  X.25  
X.26
   NANANANANANANANANANANA
NANA

So it is supposed that using na.rm=T should do the task, but if I write:

 apply(F.zoo,2,function(x)sum(F.zoo =5  F.zoo = 
9)/sum(!is.na(F.zoo))*100,na.rm=T)

I get:

Erro en FUN(newX[, i], ...) : unused argument(s) (na.rm = TRUE)

Antonio




- Phil Spector
  Statistical Computing Facility
  Department of Statistics
  UC Berkeley
  [EMAIL PROTECTED]


 On Wed, 1 Nov 2006, antonio rodriguez wrote:

 Hi,

 Having a matrix F.zoo (6575,189) with NA's in some columns I'm trying to
 extract from each column the percent of days within an specific range,
 so I've wrote this procedure:

 length(subset(F.zoo[,86],(F.zoo[,86]=5)  (F.zoo[,86]=
 9)))/(length(F.zoo[,86])-length(subset(F.zoo[,86],is.na(F.zoo[,86]*100 


 But to do this for each column (189) is pretty hard, so I want to write
 a function in order to perform this automatically, such I have the
 percent value corresponding to a specific column. I' tried these two
 formulas but I can't get it. I think the problem is how to set the
 initial values for the loop:

 Formula1:

 nnn-function(x){for (i in F.zoo[,i]){
print(length(subset(F.zoo[,i],(F.zoo[,i]=5)  (F.zoo[,i]=
 9)))/(length(F.zoo[,i])-length(subset(F.zoo[,i],is.na(F.zoo[,i]*100)
 }
 }

 Formula 2:

 H-t(matrix(1,189))

 nnn-function(x){for (i in col(H){
print(length(subset(F.zoo[,i],(F.zoo[,i]=5)  (F.zoo[,i]=
 9)))/(length(F.zoo[,i])-length(subset(F.zoo[,i],is.na(F.zoo[,i]*100)
 }
 }

 Thanks,

 Antonio

 __
 R-help@stat.math.ethz.ch 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.



__
R-help@stat.math.ethz.ch 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.


Re: [R] matrix manipulation with a for loop

2006-11-01 Thread antonio rodriguez
Gabor Grothendieck escribió:
 Try this where m is the matrix:

 100 * colMeans(m  5  m  9, na.rm = TRUE)
Dear Gabor,

Just perfect!

Thanks a lot,

Antonio




 On 11/1/06, antonio rodriguez [EMAIL PROTECTED] wrote:
 Hi,

 Having a matrix F.zoo (6575,189) with NA's in some columns I'm trying to
 extract from each column the percent of days within an specific range,
 so I've wrote this procedure:

 length(subset(F.zoo[,86],(F.zoo[,86]=5)  (F.zoo[,86]=
 9)))/(length(F.zoo[,86])-length(subset(F.zoo[,86],is.na(F.zoo[,86]*100 


 But to do this for each column (189) is pretty hard, so I want to write
 a function in order to perform this automatically, such I have the
 percent value corresponding to a specific column. I' tried these two
 formulas but I can't get it. I think the problem is how to set the
 initial values for the loop:

 Formula1:

 nnn-function(x){for (i in F.zoo[,i]){
print(length(subset(F.zoo[,i],(F.zoo[,i]=5)  (F.zoo[,i]=
 9)))/(length(F.zoo[,i])-length(subset(F.zoo[,i],is.na(F.zoo[,i]*100)
 }
 }

 Formula 2:

 H-t(matrix(1,189))

 nnn-function(x){for (i in col(H){
print(length(subset(F.zoo[,i],(F.zoo[,i]=5)  (F.zoo[,i]=
 9)))/(length(F.zoo[,i])-length(subset(F.zoo[,i],is.na(F.zoo[,i]*100)
 }
 }

 Thanks,

 Antonio

 __
 R-help@stat.math.ethz.ch 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.



__
R-help@stat.math.ethz.ch 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.


Re: [R] matrix manipulation with a for loop

2006-11-01 Thread antonio rodriguez
Phil Spector escribió:
 Antonio -
You need the na.rm in the first invocation of sum -- is.na() will 
 never
 return a missing value:

   apply(F.zoo,2,function(x)sum(x =5  x = 
 9,na.rm=TRUE)/sum(!is.na(x))*100)

   - Phil
Dear Phil,

I understand now. Many thanks!!

Best regards,

Antonio





 On Wed, 1 Nov 2006, antonio rodriguez wrote:

 Phil Spector escribió:
 Antonio -
When you're operating on each column of a matrix, you really should
 consider the apply() function, which was written for the task.  
 Also, it's usually easier to count things in R by taking the sum of 
 a logical
 expression, rather than the length of a subsetted vector.
Here's code that will solve your problem:

 apply(F.zoo,1,function(x)sum(x =5  x = 9)/sum(!is.na(x))*100)
 Dear Phil,

 The problem is that the columns have some missing values (NA's) so 
 the result for:

 apply(F.zoo,2,function(x)sum(x =5  x = 9)/sum(!is.na(x))*100) # 
 yields:

 X.1   X.2   X.3   X.4   X.5   X.6   X.7   X.8   X.9  X.10  X.11  
 X.12  X.13
  NANANANANANANANANANANA
 NANA
 X.14  X.15  X.16  X.17  X.18  X.19  X.20  X.21  X.22  X.23  X.24  
 X.25  X.26
  NANANANANANANANANANANA
 NANA

 So it is supposed that using na.rm=T should do the task, but if I write:

 apply(F.zoo,2,function(x)sum(F.zoo =5  F.zoo = 
 9)/sum(!is.na(F.zoo))*100,na.rm=T)

 I get:

 Erro en FUN(newX[, i], ...) : unused argument(s) (na.rm = TRUE)

 Antonio




- Phil Spector
  Statistical Computing Facility
  Department of Statistics
  UC Berkeley
  [EMAIL PROTECTED]


 On Wed, 1 Nov 2006, antonio rodriguez wrote:

 Hi,

 Having a matrix F.zoo (6575,189) with NA's in some columns I'm 
 trying to
 extract from each column the percent of days within an specific range,
 so I've wrote this procedure:

 length(subset(F.zoo[,86],(F.zoo[,86]=5)  (F.zoo[,86]=
 9)))/(length(F.zoo[,86])-length(subset(F.zoo[,86],is.na(F.zoo[,86]*100 

 But to do this for each column (189) is pretty hard, so I want to 
 write
 a function in order to perform this automatically, such I have the
 percent value corresponding to a specific column. I' tried these two
 formulas but I can't get it. I think the problem is how to set the
 initial values for the loop:

 Formula1:

 nnn-function(x){for (i in F.zoo[,i]){
print(length(subset(F.zoo[,i],(F.zoo[,i]=5)  (F.zoo[,i]=
 9)))/(length(F.zoo[,i])-length(subset(F.zoo[,i],is.na(F.zoo[,i]*100) 

 }
 }

 Formula 2:

 H-t(matrix(1,189))

 nnn-function(x){for (i in col(H){
print(length(subset(F.zoo[,i],(F.zoo[,i]=5)  (F.zoo[,i]=
 9)))/(length(F.zoo[,i])-length(subset(F.zoo[,i],is.na(F.zoo[,i]*100) 

 }
 }

 Thanks,

 Antonio

 __
 R-help@stat.math.ethz.ch 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.




__
R-help@stat.math.ethz.ch 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.