[R] deleting/removing previous warning message in loop

2009-03-27 Thread aaron wells

Hello R Users,

 

I am having difficulty deleting the last warning message in a loop so that the 
only warning that is produced is that from the most recent line of code.  I 
have tried options(warn=1), rm(last.warning), and resetting the last.warning 
using something like: 

 

> warning("Resetting warning message")

 

This problem has been addressed in a previous listserve string, however I do 
not follow the advice given.  See the below web link.  Any help would be 
greatly appreciated.

 

Thanks!

  Aaron Wells

 

https://stat.ethz.ch/pipermail/r-help/2008-October/176765.html

 

A general example is first, followed by an example with the loop.

 

-

Example 1:



> demo.glm<-glm(test.data[,1]~c(1:38)+I(c(1:38)^2),family=binomial) ### 
> Generalized linear model run on the first column of my example data


> warnings()   ### no warnings reported
NULL


> demo.glm<-glm(test.data[,9]~c(1:38)+I(c(1:38)^2),family=binomial)   ### 
> Generalized linear model run on the 9th column of my example data
Warning messages:
1: In glm.fit(x = X, y = Y, weights = weights, start = start, etastart = 
etastart,  :
  algorithm did not converge
2: In glm.fit(x = X, y = Y, weights = weights, start = start, etastart = 
etastart,  :
  fitted probabilities numerically 0 or 1 occurred


> warnings()### the model with column 9 as data produces warnings

Warning messages:
1: In glm.fit(x = X, y = Y, weights = weights, start = start,  ... :
  algorithm did not converge
2: In glm.fit(x = X, y = Y, weights = weights, start = start,  ... :
  fitted probabilities numerically 0 or 1 occurred


> demo.glm<-glm(test.data[,1]~c(1:38)+I(c(1:38)^2),family=binomial)  ### Re-run 
> the model with column 1 as data


> warnings()   ### reports the same warnings from the column 9 model, ideally 
> it would report the actual warning message for the column 1 model ("NULL") as 
> above
Warning messages:
1: In glm.fit(x = X, y = Y, weights = weights, start = start,  ... :
  algorithm did not converge
2: In glm.fit(x = X, y = Y, weights = weights, start = start,  ... :
  fitted probabilities numerically 0 or 1 occurred


--

Example 2: Loop



###In the below example I have reset warnings() before each iteration by using 
warning("Resetting warning message").  I would like the warnings to somehow be

consolidated into a list that I could later examine to determine which model 
iterations ran with and without warnings.  The below code doesn't work because 
the functions are

being run in the loop environment, and not the base environment.  



> test.warn<-rep(0,ncol(test.data));test.warn<-as.list(test.warn)
> 
> 
> for (i in 1:ncol(test.data)) {warn.reset<-warning("Resetting warning message")
+ demo.glm<-glm(test.data[,i]~c(1:38)+I(c(1:38)^2),family=binomial)
+ warn.new<-warnings()
+ cbind.warn<-cbind(warn.reset,warn.new)
+ test.warn[[i]]<-cbind.warn
+ test.warn
+ }
There were 38 warnings (use warnings() to see them)


> test.warn
[[1]]
  warn.reset  warn.new
Resetting warning message "Resetting warning message" NULL

[[2]]
  warn.reset  warn.new
Resetting warning message "Resetting warning message" NULL

.

.

.









Aaron F. Wells, PhD
Senior Scientist
ABR, Inc.
2842 Goldstream Road
Fairbanks, AK 99709









_
[[elided Hotmail spam]]
plorer 8.

[[elided Hotmail spam]]
[[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.


Re: [R] deleting/removing previous warning message in loop

2009-03-27 Thread aaron wells

William, The function keepWarnings that you wrote did the trick. Thanks for the 
help!

 

  Aaron
 
> Subject: Re: [R] deleting/removing previous warning message in loop
> Date: Fri, 27 Mar 2009 13:33:51 -0700
> From: wdun...@tibco.com
> To: awell...@hotmail.com
> 
> You try a using function like the following (based
> on suppressWarnings):
> keepWarnings <- function(expr) {
> localWarnings <- list()
> value <- withCallingHandlers(expr,
> warning = function(w) {
> localWarnings[[length(localWarnings)+1]] <<- w
> invokeRestart("muffleWarning")
> })
> list(value=value, warnings=localWarnings)
> }
> It returns a 2-element list, the first being the value
> of the expression given to it and the second being a
> list of all the warnings. Your code can look through
> the list of warnings and decide which to omit. E.g.,
> 
> > d<-data.frame(x=1:10, y=rep(c(FALSE,TRUE),c(4,6)))
> > z <- keepWarnings(glm(y~x, data=d, family=binomial))
> > z$value
> 
> Call: glm(formula = y ~ x, family = binomial, data = d)
> 
> Coefficients:
> (Intercept) x
> -200.37 44.52
> 
> Degrees of Freedom: 9 Total (i.e. Null); 8 Residual
> Null Deviance: 13.46
> Residual Deviance: 8.604e-10 AIC: 4
> > z$warnings
> [[1]]
>  start, etastart = etastart, mustart = mustart, offset = offset,
> family = family, control = control, intercept = attr(mt,
> "intercept") > 0): algorithm did not converge>
> 
> [[2]]
>  start, etastart = etastart, mustart = mustart, offset = offset,
> family = family, control = control, intercept = attr(mt,
> "intercept") > 0): fitted probabilities numerically 0 or 1 occurred>
> 
> > str(z$warnings[[1]])
> List of 2
> $ message: chr "algorithm did not converge"
> $ call : language glm.fit(x = X, y = Y, weights = weights, start =
> start, etastart = etastart, mustart = mustart, offset = offset,
> family = family, control = control, ...
> - attr(*, "class")= chr [1:3] "simpleWarning" "warning" "condition"
> > sapply(z$warnings, function(w)w$message)
> [1] "algorithm did not converge"
> [2] "fitted probabilities numerically 0 or 1 occurred"
> 
> You can filter out the ones you don't want to hear about
> and recall warning() with the interesting ones or present
> them in some other way.
> 
> 
> Bill Dunlap
> TIBCO Software Inc - Spotfire Division
> wdunlap tibco.com 
> 
> ---
> I am having difficulty deleting the last warning message in a loop so
> that the only warning that is produced is that from the most recent line
> of code. I have tried options(warn=1), rm(last.warning), and resetting
> the last.warning using something like: ...

_
[[elided Hotmail spam]]
plorer 8.

[[elided Hotmail spam]]
[[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.


[R] function output with for loop and if statement

2009-04-22 Thread aaron wells

Hello all, turns out i'm having a bad R week.  I am at my wits end with a 
function that I am trying to write.  When I run the lines of code outside of a 
function, I get the desired output.  When I wrap the lines of code into a 
function it doesn't work as expected.  Not sure what is going on here.  I 
suspected that the syntax of the if statement with the for loop was the 
culprit, but when I only ran the part of the code with the for loop with no if 
statement I still had the above problem (works outside function, fails when 
wrapped into a function).  Below is the code and example output.  Please help!  

 

 Thanks, 

 Aaron

 

concov.test<-function(vegetation,specieslist)
{
 test.veg<-vegetation
 names(test.veg)<-specieslist$LifeForm
 tmp<-matrix(nrow=nrow(test.veg),ncol=length(unique(names(test.veg
 for (i in unique(names(test.veg))) 
{test.out<-apply(test.veg[,names(test.veg)==i],1,sum)
  tmp.match<-unique(names(test.veg))[unique(names(test.veg))==i]
  tmp.col<-match(tmp.match,unique(names(test.veg)))
  tmp[1:nrow(test.veg),tmp.col]<-test.out
  
tmp.out<-data.frame(row.names(test.veg),tmp,row.names=1);names(tmp.out)<-unique(names(test.veg))
  tmp.out
  tmp.out.sort<-tmp.out[,order(names(tmp.out))]
 }
 if(table(names(tmp.out))[i]==1)
  tmp.match2<-names(tmp.out.sort)[names(tmp.out.sort)==i]
  tmp.col2<-match(tmp.match2,names(tmp.out.sort))
  tmp.out.sort[1:nrow(test.veg),tmp.col2]<-test.veg[,names(test.veg)==i]
 return(tmp.out.sort)
 else return(tmp.out.sort)
}

 

Incorrect output when run as function-

 

> test<-concov.test(ansveg_all,spplist.class)
> test
Bare_Ground Deciduous_Shrubs Deciduous_Tree 
Evergreen_Shrubs Evergreen_Tree Forbs Grasses Lichens Mosses Sedges
ANSG_T01_01_2008  NA   NA NA   NA   
  NANA  NA  NA   95.0 NA
ANSG_T01_02_2008  NA   NA NA   NA   
  NANA  NA  NA   16.0 NA
ANSG_T01_03_2008  NA   NA NA   NA   
  NANA  NA  NA   71.0 NA
ANSG_T01_04_2008  NA   NA NA   NA   
  NANA  NA  NA   10.0 NA
ANSG_T02_01_2008  NA   NA NA   NA   
  NANA  NA  NA   92.2 NA
ANSG_T02_02_2008  NA   NA NA   NA   
  NANA  NA  NA   14.0 NA

.

.

.

 

Correct output when code is run outside of a function

 

> test.veg<-ansveg_all
> names(test.veg)<-spplist.class$LifeForm
> tmp<-matrix(nrow=nrow(test.veg),ncol=length(unique(names(test.veg
> 
> for (i in unique(names(test.veg))) 
> {test.out<-apply(test.veg[,names(test.veg)==i],1,sum)
+ tmp.match<-unique(names(test.veg))[unique(names(test.veg))==i]
+ tmp.col<-match(tmp.match,unique(names(test.veg)))
+ tmp[1:nrow(test.veg),tmp.col]<-test.out
+ 
tmp.out<-data.frame(row.names(test.veg),tmp,row.names=1);names(tmp.out)<-unique(names(test.veg))
+ tmp.out
+ tmp.out.sort<-tmp.out[,order(names(tmp.out))]
+ }
> if(table(names(tmp.out))[i]==1)
+ tmp.match2<-names(tmp.out.sort)[names(tmp.out.sort)==i]
> tmp.col2<-match(tmp.match2,names(tmp.out.sort))
> tmp.out.sort[1:nrow(test.veg),tmp.col2]<-test.veg[,names(test.veg)==i]
> return(tmp.out.sort)
> else return(tmp.out.sort)
> 
> 
> tmp.out.sort
 Bare_Ground Deciduous_Shrubs Deciduous_Tree Evergreen_Shrubs 
Evergreen_Tree Forbs Grasses Lichens Mosses Sedges
ANSG_T01_01_2008   0 57.01.0 40.0   
35.0  22.0 5.035.0   95.01.1
ANSG_T01_02_2008   0  0.00.0  0.0   
 0.0  34.0 0.0 0.0   16.0   24.0
ANSG_T01_03_2008   0 31.00.0 47.0   
 1.0   9.1 3.0 3.0   71.0   14.0
ANSG_T01_04_2008   0  0.00.0 12.0   
 0.0  13.2 0.0 0.0   10.0   16.0
ANSG_T02_01_2008   0 15.01.0 22.0   
36.0   9.2 2.038.0   92.20.1
ANSG_T02_02_2008   0 33.0   66.0 23.0   
 2.0   5.0 0.0 3.0   14.00.0
.

.

.


_
Rediscover HotmailĀ®: Get quick friend updates right in your inbox. 

Updates2_042009
[[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.


Re: [R] function output with for loop and if statement

2009-04-22 Thread aaron wells

Mark, thanks for the suggestions.  Unfortunately that did not fix the problem.  
I have experimented (with no success) with placing braces in different 
locations around the if/else statements and removing them all together.

 

 Thanks again,

 Aaron
 


Date: Wed, 22 Apr 2009 15:24:24 -0500
From: markle...@verizon.net
To: awell...@hotmail.com
Subject: Re: [R] function output with for loop and if statement

Hi Aaron: i just looked quickly because I have to go but try wrapping braces 
around the last if else like
below and see if that helps. if you have multiple statements in an if else, i 
think you need them
so I'm actually a little surpised that your function didn't give messages when 
you tried to run it ?

Also, braces in R can have some strange behavior ( because , if code is run at 
the prompt, and a statement can complete and there's no brace on that line then 
that statement is executed regardless f there's a brace later. that probably 
doesn't make much sense but it's kind of hard to explain  ) but I'm hoping that 
below fixes the problem. good luck.


function ( ) { # brace for beginning of function

.
.
.


if (table(names(tmp.out))[i]==1) {
   tmp.match2<-names(tmp.out.sort)[names(tmp.out.sort)==i]
   tmp.col2<-match(tmp.match2,names(tmp.out.sort))
   tmp.out.sort[1:nrow(test.veg),tmp.col2]<-test.veg[,names(test.veg)==i]
   return(tmp.out.sort) 
   } else {
   return(tmp.out.sort)
   }

} # brace for end of function 





On Apr 22, 2009, aaron wells  wrote: 



Hello all, turns out i'm having a bad R week. I am at my wits end with a 
function that I am trying to write. When I run the lines of code outside of a 
function, I get the desired output. When I wrap the lines of code into a 
function it doesn't work as expected. Not sure what is going on here. I 
suspected that the syntax of the if statement with the for loop was the 
culprit, but when I only ran the part of the code with the for loop with no if 
statement I still had the above problem (works outside function, fails when 
wrapped into a function). Below is the code and example output. Please help! 



Thanks, 

Aaron



concov.test<-function(vegetation,specieslist)
{
test.veg<-vegetation
names(test.veg)<-specieslist$LifeForm
tmp<-matrix(nrow=nrow(test.veg),ncol=length(unique(names(test.veg
for (i in unique(names(test.veg))) 
{test.out<-apply(test.veg[,names(test.veg)==i],1,sum)
tmp.match<-unique(names(test.veg))[unique(names(test.veg))==i]
tmp.col<-match(tmp.match,unique(names(test.veg)))
tmp[1:nrow(test.veg),tmp.col]<-test.out
tmp.out<-data.frame(row.names(test.veg),tmp,row.names=1);names(tmp.out)<-unique(names(test.veg))
tmp.out
tmp.out.sort<-tmp.out[,order(names(tmp.out))]
}
if(table(names(tmp.out))[i]==1)
tmp.match2<-names(tmp.out.sort)[names(tmp.out.sort)==i]
tmp.col2<-match(tmp.match2,names(tmp.out.sort))
tmp.out.sort[1:nrow(test.veg),tmp.col2]<-test.veg[,names(test.veg)==i]
return(tmp.out.sort)
else return(tmp.out.sort)
}



Incorrect output when run as function-



> test<-concov.test(ansveg_all,spplist.class)
> test
Bare_Ground Deciduous_Shrubs Deciduous_Tree Evergreen_Shrubs Evergreen_Tree 
Forbs Grasses Lichens Mosses Sedges
ANSG_T01_01_2008 NA NA NA NA NA NA NA NA 95.0 NA
ANSG_T01_02_2008 NA NA NA NA NA NA NA NA 16.0 NA
ANSG_T01_03_2008 NA NA NA NA NA NA NA NA 71.0 NA
ANSG_T01_04_2008 NA NA NA NA NA NA NA NA 10.0 NA
ANSG_T02_01_2008 NA NA NA NA NA NA NA NA 92.2 NA
ANSG_T02_02_2008 NA NA NA NA NA NA NA NA 14.0 NA

.

.

.



Correct output when code is run outside of a function



> test.veg<-ansveg_all
> names(test.veg)<-spplist.class$LifeForm
> tmp<-matrix(nrow=nrow(test.veg),ncol=length(unique(names(test.veg
> 
> for (i in unique(names(test.veg))) 
> {test.out<-apply(test.veg[,names(test.veg)==i],1,sum)
+ tmp.match<-unique(names(test.veg))[unique(names(test.veg))==i]
+ tmp.col<-match(tmp.match,unique(names(test.veg)))
+ tmp[1:nrow(test.veg),tmp.col]<-test.out
+ 
tmp.out<-data.frame(row.names(test.veg),tmp,row.names=1);names(tmp.out)<-unique(names(test.veg))
+ tmp.out
+ tmp.out.sort<-tmp.out[,order(names(tmp.out))]
+ }
> if(table(names(tmp.out))[i]==1)
+ tmp.match2<-names(tmp.out.sort)[names(tmp.out.sort)==i]
> tmp.col2<-match(tmp.match2,names(tmp.out.sort))
> tmp.out.sort[1:nrow(test.veg),tmp.col2]<-test.veg[,names(test.veg)==i]
> return(tmp.out.sort)
> else return(tmp.out.sort)
> 
> 
> tmp.out.sort
Bare_Ground Deciduous_Shrubs Deciduous_Tree Evergreen_Shrubs Evergreen_Tree 
Forbs Grasses Lichens Mosses Sedges
ANSG_T01_01_2008 0 57.0 1.0 40.0 35.0 22.0 5.0 35.0 95.0 1.1
ANSG_T01_02_2008 0 0.0 0.0 0.0 0.0 34.0 0.0 0.0 16.0 24.0
ANSG_T01_03_2008 0 31.0 0.0 47.0 1.0 9.1 3.0 3.0 71.0 14.0
ANSG_T01_04_2008 0 0.0 0.0 12.0 0.0 13.2 0.0 0.0 10.0 16.0
ANSG_T02_01_2008 0 15.0 1.0 22.0 

Re: [R] function output with for loop and if statement

2009-04-23 Thread aaron wells
ular
leddecLedum_decumbens Evergreen_Shrubs Vascular
picgla   Picea_glauca   Evergreen_Tree Vascular
picmar  Picea_mariana   Evergreen_Tree Vascular
arcuvaArctostaphylos_uva-ursi Evergreen_Shrubs Vascular
zygele  Zygadenus_elegansForbs Vascular
epiangEpilobium_angustifoliumForbs Vascular
calpur Calamagrostis_purpurascens  Grasses Vascular
poaarcPoa_arctica  Grasses Vascular
pelaph Peltigera_aphthosa  Lichens Non-Vascular
flacucFlavocetraria_cucullata  Lichens Non-Vascular
tomnit Tomentypnum_nitens   Mosses Non-Vascular
hylspl   Hylocomium_splendens   Mosses Non-Vascular
carvag Carex_vaginata   Sedges Vascular
caraqu  Carex_aquatilis_aquatilis   Sedges Vascular
calcan   Calamagrostis_canadensis  Grasses Vascular
carsaxCarex_saxatilis   Sedges Vascular

 
 
> Subject: Re: [R] function output with for loop and if statement
> From: gavin.simp...@ucl.ac.uk
> To: awell...@hotmail.com
> CC: r-help@r-project.org
> Date: Thu, 23 Apr 2009 09:18:17 +0100
> 
> On Wed, 2009-04-22 at 15:51 -0400, aaron wells wrote:
>> Hello all, turns out i'm having a bad R week. I am at my wits end
>> with a function that I am trying to write. When I run the lines of
>> code outside of a function, I get the desired output. When I wrap the
>> lines of code into a function it doesn't work as expected. Not sure
>> what is going on here. I suspected that the syntax of the if
>> statement with the for loop was the culprit, but when I only ran the
>> part of the code with the for loop with no if statement I still had
>> the above problem (works outside function, fails when wrapped into a
>> function). Below is the code and example output. Please help! 
> 
> It would help a lot if you spaced your code out a bit around key
> operators and structural elements.
> 
> Anyway, you didn't enclose the if/else blocks in {} in such cases, only
> the line following the if(...) is run if the clause is TRUE - the lines
> after that, but the code you provided doesn't even load into R - the
> lone else is a syntax error. So it is a bit difficult to see what is
> going on and you don;t provide an example any of us can reproduce as we
> don't have your data objects.
> 
> I edited your functions below to do what I think you intended and to
> clean it up a bit. Perhaps we can use this as starting point if the
> function here:
> 
> `concov.test` <- function(vegetation, specieslist)
> {
> test.veg <- vegetation
> names(test.veg) <- specieslist$LifeForm
> nams <- unique(names(test.veg))
> tmp <- matrix(nrow = nrow(test.veg), ncol = length(nams))
> for (i in nams) {
> test.out <- apply(test.veg[, names(test.veg)==i], 1, sum)
> tmp.match <- nams[nams==i]
> tmp.col <- match(tmp.match, nams)
> tmp[1:nrow(test.veg), tmp.col] <- test.out
> tmp.out <- data.frame(row.names(test.veg), tmp, row.names = 1)
> names(tmp.out) <- nams
> ## do you need this or is this for debugging?
> print(tmp.out)
> tmp.out.sort <- tmp.out[, order(names(tmp.out))]
> }
> if(table(names(tmp.out))[i] == 1) {
> nams.srt <- names(tmp.out.sort)
> tmp.match2 <- nams.srt[nams.srt == i]
> tmp.col2 <- match(tmp.match2, names.srt)
> tmp.out.sort[1:nrow(test.veg), tmp.col2] <-
> test.veg[, names(test.veg)==i]
> return(tmp.out.sort)
> } else {
> return(tmp.out.sort)
> }
> }
> 
> doesn't do what you want. Please provide a small, reproducible example
> (that means with data, dummy or otherwise) so we can run the code and
> test changes against your data.
> 
> HTH
> 
> G
> 
>> 
>> 
>> Thanks, 
>> 
>> Aaron
>> 
>> 
>> 
>> concov.test<-function(vegetation,specieslist)
>> {
>> test.veg<-vegetation
>> names(test.veg)<-specieslist$LifeForm
>> tmp<-matrix(nrow=nrow(test.veg),ncol=length(unique(names(test.veg
>> for (i in unique(names(test.veg))) 
>> {test.out<-apply(test.veg[,names(test.veg)==i],1,sum)
>> tmp.match<-unique(names(test.veg))[unique(names(test.veg))==i]
>> tmp.col<-match(tmp.match,unique(names(test.veg)))
>> tmp[1:nrow(test.veg),tmp.col]<-test.out
>> tmp.out<-data.frame(row.names(test.veg),tmp,row.names=1);names(tmp.out)<-unique(names(test.veg))
>> tmp.out
>> tmp.out.sort<-tmp.out[,order(names(tmp.out))]
>> }
>> if(table(names(tmp.out))[i]==1)
>> tmp.match2<-names(tmp.out.sort)[names(tmp.out.sort)==i]
>> tmp.col2<-match(tmp.match2,names(tmp.out.sort))
>>

[R] ordering

2009-03-10 Thread aaron wells

Hello, I would like to order a matrix by a specific column. For instance:

 

> test
  [,1] [,2] [,3]
 [1,]1  100   21
 [2,]23   22
 [3,]3  100   23
 [4,]4   60   24
 [5,]5   55   25
 [6,]6   45   26
 [7,]7   75   27
 [8,]8   12   28
 [9,]9   10   29
[10,]   10   22   30
>

 test[order(test[,2]),]
  [,1] [,2] [,3]
 [1,]23   22
 [2,]9   10   29
 [3,]8   12   28
 [4,]   10   22   30
 [5,]6   45   26
 [6,]5   55   25
 [7,]4   60   24
 [8,]7   75   27
 [9,]1  100   21
[10,]3  100   23


This works well and good in the above example matrix.  However in the matrix 
that I actually want to sort (derived from a function that I wrote) I get 
something like this:

 

> test[order(as.numeric(test[,2])),] ### First column is row.names


 f con f.1 cov f.2 minimum f.3 maximum f.4   cl
asahi* 100   *   1   * 0.1   *   2   * test
castet   * 100   *   2   * 0.1   *   5   * test
clado* 100   *   1   * 0.7   *   2   * test
aulac*  33   *   0   * 0.1   * 0.1   * test
buell*  33   *   0   * 0.1   * 0.1   * test
camlas   *  33   *   0   * 0.1   * 0.1   * test
carbig   *  33   *   1   *   1   *   1   * test
poaarc   *  67   *   0   * 0.1   * 0.1   * test
polviv   *  67   *   0   * 0.1   * 0.1   * test


 

where R interprets 100 to be the lowest value and orders increasing from there. 
 

 

> is.numeric(test[,2])
[1] FALSE
> is.double(test[,2])
[1] FALSE
> is.integer(test[,2])
[1] FALSE
> is.real(test[,2])
[1] FALSE


 

My questions are:  Why is this happening? and How do I fix  it? 

 

Thanks in advance!

 

      Aaron Wells

_


cns!503D1D86EBB2B53C!2285.entry?ocid=TXT_TAGLM_WL_UGC_Contacts_032009
[[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.


Re: [R] ordering

2009-03-10 Thread aaron wells

Thanks Peter, that did the trick.  I'll modify my function so that the numeric 
conversion is done automatically thus saving me the extra step of converting 
later on.

 

  Aaron Wells
 
> Subject: RE: [R] ordering
> Date: Wed, 11 Mar 2009 08:41:50 +1300
> From: palsp...@hortresearch.co.nz
> To: awell...@hotmail.com; r-help@r-project.org
> 
> Kia ora Aaron
> 
> As you have identified, test[,2] is not numeric - it is probably factor.
> Your function must have made the conversion, so you may want to modify
> that. Alternative, try:
> 
> test[order(as.numeric(as.character(test[,2]))),] 
> 
> BTW, str(test) is a good way to find out more about the structure of
> your object.
> 
> HTH 
> 
> Peter Alspach
> 
> 
> 
> 
> > -Original Message-
> > From: r-help-boun...@r-project.org 
> > [mailto:r-help-boun...@r-project.org] On Behalf Of aaron wells
> > Sent: Wednesday, 11 March 2009 8:30 a.m.
> > To: r-help@r-project.org
> > Subject: [R] ordering
> > 
> > 
> > Hello, I would like to order a matrix by a specific column. 
> > For instance:
> > 
> > 
> > 
> > > test
> > [,1] [,2] [,3]
> > [1,] 1 100 21
> > [2,] 2 3 22
> > [3,] 3 100 23
> > [4,] 4 60 24
> > [5,] 5 55 25
> > [6,] 6 45 26
> > [7,] 7 75 27
> > [8,] 8 12 28
> > [9,] 9 10 29
> > [10,] 10 22 30
> > >
> > 
> > test[order(test[,2]),]
> > [,1] [,2] [,3]
> > [1,] 2 3 22
> > [2,] 9 10 29
> > [3,] 8 12 28
> > [4,] 10 22 30
> > [5,] 6 45 26
> > [6,] 5 55 25
> > [7,] 4 60 24
> > [8,] 7 75 27
> > [9,] 1 100 21
> > [10,] 3 100 23
> > 
> > 
> > This works well and good in the above example matrix. 
> > However in the matrix that I actually want to sort (derived 
> > from a function that I wrote) I get something like this:
> > 
> > 
> > 
> > > test[order(as.numeric(test[,2])),] ### First column is row.names
> > 
> > 
> > f con f.1 cov f.2 minimum f.3 maximum f.4 cl
> > asahi * 100 * 1 * 0.1 * 2 * test
> > castet * 100 * 2 * 0.1 * 5 * test
> > clado * 100 * 1 * 0.7 * 2 * test
> > aulac * 33 * 0 * 0.1 * 0.1 * test
> > buell * 33 * 0 * 0.1 * 0.1 * test
> > camlas * 33 * 0 * 0.1 * 0.1 * test
> > carbig * 33 * 1 * 1 * 1 * test
> > poaarc * 67 * 0 * 0.1 * 0.1 * test
> > polviv * 67 * 0 * 0.1 * 0.1 * test
> > 
> > 
> > 
> > 
> > where R interprets 100 to be the lowest value and orders 
> > increasing from there. 
> > 
> > 
> > 
> > > is.numeric(test[,2])
> > [1] FALSE
> > > is.double(test[,2])
> > [1] FALSE
> > > is.integer(test[,2])
> > [1] FALSE
> > > is.real(test[,2])
> > [1] FALSE
> > 
> > 
> > 
> > 
> > My questions are: Why is this happening? and How do I fix it? 
> > 
> > 
> > 
> > Thanks in advance!
> > 
> > 
> > 
> > Aaron Wells
> > 
> > _
> > 
> > 
> > cns!503D1D86EBB2B53C!2285.entry?ocid=TXT_TAGLM_WL_UGC_Contacts_032009
> > [[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.
> > 
> 
> The contents of this e-mail are confidential and may be subject to legal 
> privilege.
> If you are not the intended recipient you must not use, disseminate, 
> distribute or
> reproduce all or any part of this e-mail or attachments. If you have received 
> this
> e-mail in error, please notify the sender and delete all material pertaining 
> to this
> e-mail. Any opinion or views expressed in this e-mail are those of the 
> individual
> sender and may not represent those of The New Zealand Institute for Plant and
> Food Research Limited.

_



[[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.


[R] points3d and ordirgl

2012-12-07 Thread Aaron Wells
Hello all, I have been using the function ordirgl to plot 3D dynamic
ordinations.  The ordirgl function works just fine. IN fact, I was even
able to write a function that allows me to identify points in the 3D plot:

identify.rgl<-function(env_var,ord,dim1,dim2,dim3)

{
tmp<-select3d(button="left")
tmp.keep<-tmp(ord[,dim1],ord[,dim2],ord[,dim3])
env_var[tmp.keep=="TRUE"]
}

where
env_var = a variable to be identified (e.g. plot IDs as in >
row.names(dataframe))
ord = ordination points or scores created using a function such as metaMDS
or nmds) that is recognized by points or scores
dim1 = dimension 1 (e.g., 1)
dim2 = dimension 2 (e.g., 2)
dim 3 = dimension 3 (e.g, 3

e.g.,  > identify.rgl(row.names(vegmat),veg_nmds$points,1,2,3)

My issue is that I would like to use the points3d function to add points of
different colors and sizes to the dynamic 3D plot created by using ordirgl.
In my case the different colored and sized points represent different
clusters from the results of the Partitioning Around Mediods (pam)
clustering function (from library cluster).  I have used this with success
in the past (two years back), but can't get it to work properly  now. An
example of the code I have used in the past is:

>
points3d(veg_nmds$points[,1],veg_nmds$points[,2],veg_nmds$points[,3],display
= "sites",veg_pam12$clustering=="1",col=2,size=3)

The code above is intended to add the points from cluster 1 to the nmds
plot in the color red and size 3.

Anyone have an ideas?

Thanks,
   Aaron

[[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.