[R-sig-eco] [Fwd: Re: how to detect different species among samples]

Mario José Marques mariojosebr at yahoo.com.br
Fri Feb 7 13:11:24 CET 2014


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 <weiser2 at 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.benucci at gmail.com>
>>> Komu: r-sig-ecology at 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 <weiser2 at 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.goslee at 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.benucci at 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 at r-project.org
>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-ecology
>>>>
>>>>
>>>>
>>>>
>>>
>>>        [[alternative HTML version deleted]]
>>>
>>> _______________________________________________
>>> R-sig-ecology mailing list
>>> R-sig-ecology at r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-ecology
>>
>>
>>
>
> 	[[alternative HTML version deleted]]
>
>
>
> _______________________________________________
> R-sig-ecology mailing list
> R-sig-ecology at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-ecology
>



More information about the R-sig-ecology mailing list