Hi Gian,

in your code, you selected column and do logic test when what you want is to do test in line

In dune data, sites are lines, then:

# Select species with abundance > 0 on line 1
spp1 <- names(dune[1, dune[1, ] > 0])

# Select species with abundance > 0 on line 2
spp2 <- names(dune[2, dune[2, ] > 0])

# Common species
spp1[spp1 %in% spp2]

# Different species
spp1[!spp1 %in% spp2]

Matrix and data frames can be referenced, for example:

dune[line, column]

If you want all column of line 1:

dune[line, ] # must have ","

If you want some column (or lines), logic test return a vector of TRUE/FALSE and you put this in column (or line) place. This return only column where vector have TRUE. Then you want invert results of vector TRUE/FALSE using "!"

v <- c(TRUE, FALSE, TRUE)

v
TRUE, FALSE, TRUE

!v
FALSE, TRUE, FALSE

Excuse me if I do not understand your question.

Best regards,

Mario

...................................................
Mario José Marques
Doctoral student in Ecology
Institute of Biology, Dept. Plant Biology, Ecology Lab.
State University of Campinas - UNICAMP
Campinas, São Paulo, Brazil

On 07-02-2014 09:30, Gian Maria Niccolò Benucci wrote:
Dear Martin and dear all,

I tried your approach but I suppose it does not work...
my commands are the following, where's my mistake?

head(dune)
    Belper Empnig Junbuf Junart Airpra Elepal Rumace Viclat Brarut Ranfla
Cirarv
2       3      0      0      0      0      0      0      0      0
0      0
13      0      0      3      0      0      0      0      0      0
2      0
4       2      0      0      0      0      0      0      0      2
0      2
16      0      0      0      3      0      8      0      0      4
2      0
6       0      0      0      0      0      0      6      0      6
0      0
1       0      0      0      0      0      0      0      0      0
0      0
    Hyprad Leoaut Potpal Poapra Calcus Tripra Trirep Antodo Salrep Achmil
Poatri
2       0      5      0      4      0      0      5      0      0
3      7
13      0      2      0      2      0      0      2      0      0
0      9
4       0      2      0      4      0      0      1      0      0
0      5
16      0      0      0      0      3      0      0      0      0
0      2
6       0      3      0      3      0      5      5      3      0
2      4
1       0      0      0      4      0      0      0      0      0
1      2
    Chealb Elyrep Sagpro Plalan Agrsto Lolper Alogen Brohor
2       0      4      0      0      0      5      2      4
13      1      0      2      0      5      0      5      0
4       0      4      5      0      8      5      2      3
16      0      0      0      0      7      0      4      0
6       0      0      0      5      0      6      0      0
1       0      4      0      0      0      7      0      0

names.A <- names(dune)[dune[1]>0] # this takes the names of line 1, that
is sample 2, right?
names.A <- names(dune)[dune[2]>0] # this takes the names of line 2,
...right?

names.A
[1] "Trirep"

names.B
  [1] "Belper" "Empnig" "Junbuf" "Airpra" "Rumace" "Viclat" "Brarut" "Ranfla"
  [9] "Cirarv" "Hyprad" "Leoaut" "Potpal" "Poapra" "Calcus" "Tripra" "Trirep"
[17] "Antodo" "Salrep" "Achmil" "Poatri" "Chealb" "Sagpro" "Agrsto" "Lolper"
[25] "Alogen" "Brohor"


if you look to the dataframe dune, the sample lies in line 1 doeas not have
only the "Trirep" species, similarly I do not know how it give me 26
species for the second samples...
Where is the problem?
Sorry for this stupid questions, but I am a rusty R-user :)

Thanks for helping,

Gian





On 3 February 2014 20:42, Martin Weiser <weis...@natur.cuni.cz> wrote:

Hi Gian,

there are many ways to do it. In the line with my previous post, you can
do:
new.data <- dune[c(Line.number.where.sampleA.I.am.interested.in.lies,
Line.number.where.sampleB.I.am.interested.in.lies), ]

and proceed with the new.data like with the dune (as I wrote you
already)

another approach:

species.names.from.the.sampleA <-
names(dune)[dune[Line.number.where.sampleA.I.am.interested.in.lies,]>0]
species.names.from.the.sampleB
<-names(dune)[dune[Line.number.where.sampleB.I.am.interested.in.lies,]>0]
multiple.occurrences <-

c(species.names.from.sampleA,species.names.from.sampleB)[duplicated(c(species.names.from.sampleA,species.names.from.sampleB))]
single.occurrences <-
unique(c(species.names.from.sampleA,species.names.from.sampleB))

HTH
Martin





-------- Přeposlaná zpráva --------
Od: Gian Maria Niccolò Benucci <gian.benu...@gmail.com>
Komu: r-sig-ecology@r-project.org
Předmět: Re: [R-sig-eco] how to detect different species among samples
Datum: Mon, 3 Feb 2014 17:50:51 +0100

Hi Martin,

thanks a lot. Also your commands are working... It's very nice to see how
different solutions in R can be found for a single problem.
I just have another question now, but... if I would know which species
are
in common (and which not) between two particular selected samples?
Thanks for the brainstorming :)

Gian





On 3 February 2014 17:01, Martin Weiser <weis...@natur.cuni.cz> wrote:

Hi,
I am not sure that I get what you wanted, but if you are interested in
names, I propose something like this:

is.there <- dune
is.there[is.there > 1] <- 1 #change counts to presence/absence data
number.of.samples <- colSums(is.there)
single.occurrences<-names(dune)[number.of.samples ==1]
multiple.occurrences <- names(dune)[number.of.samples > 1]

HTH,
Martin

what about:Gian Maria Niccolò Benucci píše v So 01. 02. 2014 v 14:08
+0100:
Hi Sarah,

I am sorry, I'll try to be more precise. Given a dataset like...

data(dune)
dune[1:8, 1:10]
    Belper Empnig Junbuf Junart Airpra Elepal Rumace Viclat Brarut
Ranfla
2       3      0      0      0      0      0      0      0      0
    0
13      0      0      3      0      0      0      0      0      0
    2
4       2      0      0      0      0      0      0      0      2
    0
16      0      0      0      3      0      8      0      0      4
    2
6       0      0      0      0      0      0      6      0      6
    0
1       0      0      0      0      0      0      0      0      0
    0
8       0      0      0      4      0      4      0      0      2
    2
5       2      0      0      0      0      0      5      0      2
    0

In this dataset we can see that the first species, named Belper, is
present
in samples 2, 4 and 5 but is absent in samples 13, 16 and so on...
Now my
question is, how can I extract the names of the species (and even
their
abundances) that are common and the species that are not common
between
the
different samples in my dataset?

Many thanks in advance,

--
Gain






On 1 February 2014 13:42, Sarah Goslee <sarah.gos...@gmail.com>
wrote:

Hi Gian,

I don't understand what you're trying to do. Can you give a simple
example
of your data and what your results should be?

Sarah

On Saturday, February 1, 2014, Gian Maria Niccol Benucci <
gian.benu...@gmail.com> wrote:

Hi all R-sig-ecologists,


Sorry for the very simple and probably stupid question. I was
wandering if
exist a simple method or a function in R, to detect which
different
species
are present among the samples of a given data community matrix.
Thanks a lot in advance,

--
Gian



--
Sarah Goslee
http://www.stringpage.com
http://www.sarahgoslee.com
http://www.functionaldiversity.org


       [[alternative HTML version deleted]]

_______________________________________________
R-sig-ecology mailing list
R-sig-ecology@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-ecology





       [[alternative HTML version deleted]]

_______________________________________________
R-sig-ecology mailing list
R-sig-ecology@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-ecology




        [[alternative HTML version deleted]]



_______________________________________________
R-sig-ecology mailing list
R-sig-ecology@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-ecology


_______________________________________________
R-sig-ecology mailing list
R-sig-ecology@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-ecology

Reply via email to