Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中excel表格的行和列不符_R - Fatal编程技术网

R中excel表格的行和列不符

R中excel表格的行和列不符,r,R,我试图对安大略省北部的蜜蜂群落进行一些功能多样性分析。我正在使用R软件包SYNCSA并试图计算Rao的多样性。一个错误不断出现,说“有来自社区数据的物种不在特征矩阵上” 为了使用rao.diversity函数进行分析,我需要制作一个丰度数据表(例如,2个蜜蜂群落以及其中每个物种的数量)和一个特征表(例如,群落中的每个物种及其花粉特异性、筑巢行为等,其中包含我按数字排序的有序数据) 现在,有一个使用此函数的规则,即物种名称,在社区的列中(丰度)数据,必须与性状数据中行的物种名称完全匹配。当我遇到此

我试图对安大略省北部的蜜蜂群落进行一些功能多样性分析。我正在使用R软件包SYNCSA并试图计算Rao的多样性。一个错误不断出现,说“有来自社区数据的物种不在特征矩阵上”

为了使用rao.diversity函数进行分析,我需要制作一个丰度数据表(例如,2个蜜蜂群落以及其中每个物种的数量)和一个特征表(例如,群落中的每个物种及其花粉特异性、筑巢行为等,其中包含我按数字排序的有序数据)

现在,有一个使用此函数的规则,即物种名称,在社区的列中(丰度)数据,必须与性状数据中行的物种名称完全匹配。当我遇到此错误时,我立即确保社区数据的列与性状数据的行匹配,就我所见,它们确实匹配。我还尝试了organize.syncsa函数,该函数本应修复不匹配的列/行,但却得到了错误age“comm必须只包含数字或二进制变量”。我的comm(即社区数据)确实只包含数字变量,所以我也不知道我在那里做错了什么

以下是我的2个表格分别用于社区数据和特征数据的ASCII文本表示:

dput(community.data.raos)
structure(list(X = structure(2:1, .Label = c("Akimiski", "Far North"
), class = "factor"), Andrena.algida = 1:0, Andrena.barbilabris = 1:0, 
    Andrena.frigida = 1:0, Anthophora.terminalis = 0:1, Bombus.flavidus = c(6L, 
    0L), Bombus.flavifrons = 2:1, Bombus.frigidus = c(65L, 27L
    ), Bombus.melanopygus = c(0L, 8L), Bombus.mixtus = 1:2, Bombus.sandersoni = c(21L, 
    0L), Bombus.sylvicola = c(4L, 17L), Bombus.ternarius = c(5L, 
    15L), Bombus.terricola = c(8L, 0L), Bombus.vagans = c(9L, 
    0L), Colletes.americanus = 0:1, Colletes.impunctatus = c(0L, 
    6L), Colletes.nigrifrons = c(1L, 5L), Halictus.ligatus = c(0L, 
    2L), Halictus.rubicundus = c(2L, 0L), Halictus.tripartitus = 1:0, 
    Halictus.virgatellus = c(2L, 12L), Lasioglossum.ephialtum = c(2L, 
    0L), Lasioglossum.laevissimum = 1:0, Lasioglossum.inconditum = c(5L, 
    0L), Lasioglossum.quebecense = 1:0, Coelioxys.sodalis = 2:1, 
    Hoplitis.albifrons = 1:0, Megachile.circumcincta = 0:1, Megachile.frigida = 2:3, 
    Megachile.gemula = 1:2, Megachile.lapponica = c(1L, 1L), 
    Megachile.melanophaea = c(0L, 3L), Megachile.montivaga = 1:0, 
    Megachile.perihirta = c(0L, 3L), Megachile.relativa = 1:2, 
    Osmia.bucephala = c(1L, 1L), Osmia.laticeps = 1:0, Osmia.nigrifrons = c(2L, 
    0L), Osmia.nigriventris = c(5L, 1L), Osmia.paradisica = c(0L, 
    8L), Osmia.tarsata = 1:0, Osmia.tersula = 1:0), class = "data.frame", row.names = c(NA, 
-2L))


dput(trait.table.raos)
structure(list(X = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 
9L, 10L, 11L, 12L, 13L, 14L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 
24L, 26L, 25L, 27L, 15L, 23L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 
35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L), .Label = c("Andrena.algida ", 
"Andrena.barbilabris ", "Andrena.frigida ", "Anthophora.terminalis", 
"Bombus.flavidus", "Bombus.flavifrons ", "Bombus.frigidus ", 
"Bombus.melanopygus ", "Bombus.mixtus", "Bombus.sandersoni ", 
"Bombus.sylvicola", "Bombus.ternarius ", "Bombus.terricola ", 
"Bombus.vagans ", "Coelioxys.sodalis ", "Colletes.americanus", 
"Colletes.impunctatus", "Colletes.nigrifrons", "Halictus.ligatus", 
"Halictus.rubicundus", "Halictus.tripartitus", "Halictus.virgatellus ", 
"Hoplitis.albifrons ", "Lasioglossum.ephialtum", "Lasioglossum.inconditum", 
"Lasioglossum.laevissimum ", "Lasioglossum.quebecense ", "Megachile.circumcincta ", 
"Megachile.frigida", "Megachile.gemula", "Megachile.lapponica", 
"Megachile.melanophaea", "Megachile.montivaga ", "Megachile.perihirta", 
"Megachile.relativa", "Osmia.bucephala", "Osmia.laticeps", "Osmia.nigrifrons", 
"Osmia.nigriventris", "Osmia.paradisica ", "Osmia.tarsata", "Osmia.tersula "
), class = "factor"), Pollen.Specificity = c(2L, 2L, 1L, 2L, 
0L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 0L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 
1L, 2L, 2L, 2L, 1L, 2L), Tongue.Length = c(0L, 0L, 0L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L), Sociality = c(1L, 1L, 1L, 1L, 0L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 3L, 2L, 2L, 3L, 3L, 2L, 
1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L), Nesting.Behavior = c(0L, 0L, 0L, 2L, 1L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 2L, 1L, 
0L, 1L, 1L), Average.Female.ITD = c(NA, NA, NA, NA, 3.64, NA, 
3.02, NA, 4.52, 3.21, 3.67, 4.17, 4.14, 3.59, NA, 2.15, 1.97, 
NA, 2.21, NA, 1.79, NA, NA, 1.43, NA, NA, NA, NA, 3.14, 3.57, 
3.21, 3.24, NA, 3.92, NA, 4, NA, 3.29, 3.86, 3.09, NA, NA)), class = "data.frame", row.names = c(NA, 
-42L))

我得到的错误示例如下:

rao.diversity(comm = community.data.raos, traits = trait.table.raos)
Error in rao.diversity(comm = community.data.raos, traits = trait.table.raos) : 

 There are species from community data that are not on traits matrix
> 

rao.diversity函数应该为每个站点(在我的例子中,有两个这样的站点)生成一系列值介于0和1之间的小表格,表示不同的多样性度量。相反,我得到的错误消息是“有来自社区数据的物种不在特征矩阵中。”

文档并没有说得非常清楚,但我们可以看到,社区对象的列名必须与traits对象的行名匹配。有了这些信息,我们可以查看您的输入并确定一些问题:

  • 社区对象的第一列
    X
    不是物种。如果要保留该信息,请将其删除,将值转换为行名称

  • 您的traits对象在第一列中有物种,但它们必须是行名称

  • 您的物种标签在这两个对象之间不一致:在特征表中,其中一些具有尾随空白。请使用
    trimws()
    来消除这种情况,以便精确匹配


如果仍然存在问题,您可能需要查看
setdiff(row.names(trait.table.raos)、colnames(community.data.rao))
和相反的
setdiff(colnames(community.data.rao)、row.names(trait.table.raos))
,以确保物种名称之间的匹配是准确的。这两个语句都不应返回任何结果。

文档并没有非常清楚地说明这一点,但从中可以看出,社区对象的列名必须与traits对象的行名相匹配。有了这些信息,我们可以查看您的输入并识别一些p问题:

  • 社区对象的第一列
    X
    不是物种。如果要保留该信息,请将其删除,将值转换为行名称

  • 您的traits对象在第一列中有物种,但它们必须是行名称

  • 您的物种标签在这两个对象之间不一致:在特征表中,其中一些具有尾随空白。请使用
    trimws()
    来消除这种情况,以便精确匹配


如果仍然存在问题,您可能需要查看
setdiff(row.names(trait.table.raos)、colnames(community.data.rao))
和相反的
setdiff(colnames(community.data.rao)、row.names(trait.table.raos))
,以确保物种名称之间的匹配是准确的。这两个语句都不会返回任何结果。

我没有软件包,但查看Github上的文档和代码,至少您需要去掉
community.data.raos
,column
X
。您可以将其转换为
row.nam如果您想保留信息,可以使用
行名称(community.data.rao)=community.data.rao$X
,然后删除带有
community.data.rao$X=NULL
的列。类似地,您需要将
trait.table.raos
X
列转换为行名称。要了解原因,您可能还需要进行一些清理。trait表中的一些物种名称具有尾随空格,例如
“Bombus.frigidus”
,但社区数据的列名没有
函数将为您修剪空白。我将尝试一下,看看它是否有效。这些都是好主意。如果问题仍然存在,我将再次发布,或者如果这解决了问题,我将关闭线程。@Gregor,这是有效的。现在我只需要弄清楚如何向上投票,并将此问题标记为已回答。很高兴听到这个消息!我不想发布答案由于我没有下载包进行测试,但经您确认后,我将做一个简短的总结,然后您可以接受。我将在今天下午进行尝试。我没有包,但查看Github上的文档和代码,至少您需要去掉
community.data.raos
,column
X
。如果希望保留信息,可以使用
行.names(community.data.rao)将其转换为
行.names
=community.data.rao$X
,然后删除带有
community.data.rao$X=NULL
的列。类似地,您需要将
trait.table.raos
X
列转换为行名称。要了解原因,您可能还需要进行一些清理。trait表中的一些物种名称具有尾随空格,例如。