Re: [R] Specaccum

From: Gavin Simpson <gavin.simpson_at_ucl.ac.uk>
Date: Wed, 20 Feb 2008 13:57:47 +0000

On Wed, 2008-02-20 at 13:24 +0100, Alfonso Pérez Rodríguez wrote:
> Hello, I'm trying to obtain a species abundance curve with the
> function specaccum from vegan package. I've applied this function to
> my data and I've obtained something like this:
>
> Sites 1.000000 2.000000 3.000000 4.000000 5.0000000 6.0000000
> 7.00 Richness 6.510000 8.290000 9.150000 9.770000 10.3300000
> 10.7600000 sd 1.381662 1.350608 1.200799 1.117853 0.9749903
> 0.9333333 0.90

That is just the _printed_ representation of the resulting object. In R, don't believe your eyes - what is printed is not always an accurate reflection of the complete object!

>
> But the problem is that I want to export this data to an excel file,
> or a txt file, but I'm not able to do it because I can not asign this
> values to a data.frame or a matrix or something. When I try to
> transform in a data frame the program tell me:
>
> Error en as.data.frame.default(x[[i]], optional = TRUE,
> stringsAsFactors = stringsAsFactors) :
> cannot coerce class "specaccum" into a data.frame
>
> Then, what can I do? Thank you very much.

I'll start with a reproducible example, from ?specaccum

require("vegan")
data(BCI)
sp1 <- specaccum(BCI)
str(sp1)

The latter call yields:

List of 6

 $ call    : language specaccum(comm = BCI)
 $ method  : chr "exact"
 $ sites   : int [1:50] 1 2 3 4 5 6 7 8 9 10 ...
 $ richness: num [1:50]  90.8 121.6 139.0 150.7 159.2 ...
 $ sd      : num [1:50] 6.93 7.19 7.00 6.64 6.25 ...
 $ perm    : NULL

Note the class - "specaccum" - and R has no idea how to convert this to a data frame or matrix - there is no as.data.frame.specaccum() and this is because how do you combine 3 vectors of length 50 into a data frame with other information that is of a different type and length? You can't.

So, now your problem boils down to extracting the relevant information from sp1 and writing that out as a data frame. This is very easy. Given your email I presume you are interested in the 'sites', 'richness' and 'sd' components:

my.res <- with(sp1, data.frame(sites, richness, sd)) head(my.res)

The latter call yielding the first 6 lines of my.res (there are 50 in total):

  sites richness       sd
1     1  90.7800 6.934811
2     2 121.6098 7.193362
3     3 139.0459 7.001993
4     4 150.7116 6.635769
5     5 159.2363 6.248117
6     6 165.8306 5.894738

Now just write out my.res using write.table()

write.table(my.res, file = "my.results.txt")

Which works for me.

Is that what you wanted?

HTH G

>
>
>
>
> Alfonso Prez Rodrguez
> Instituto de Investigaciones Marinas
> C/ Eduardo Cabello n 6
> C.P. 36208 Vigo (Espaa)
> Tlf.- 986231930 Extensin 241
> e-mail: fonsilei_at_iim.csic.es
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help_at_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.

-- 
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
 Dr. Gavin Simpson             [t] +44 (0)20 7679 0522
 ECRC, UCL Geography,          [f] +44 (0)20 7679 0565
 Pearson Building,             [e] gavin.simpsonATNOSPAMucl.ac.uk
 Gower Street, London          [w] http://www.ucl.ac.uk/~ucfagls/
 UK. WC1E 6BT.                 [w] http://www.freshwaters.org.uk
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%

______________________________________________
R-help_at_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.
Received on Wed 20 Feb 2008 - 14:01:03 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 20 Feb 2008 - 15:30:15 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive