0

我正在创建一个不同丰富度的数据框vegan。我遇到了 Pielou 的问题,因为我需要记录以前创建的“pumice.richness”数据来实现这个结果并得到以下错误:

analysis <- function(havreanosim, havre_ANOSIM3.csv)
outfile <- sprintf("%s-analysis.txt", description)
pumice.data<-read.csv("c:\\pumice\\phd\\data_analysis\\havre\\havre_ANOSIM3.csv",header=T)
pumice.locationcode <- pumice.data[, 1:ncol(pumice.data)]
pumice.trop_temp_subtrop <- pumice.data[, 2:ncol(pumice.data)]
pumice.shannon <- specnumber~locationcode(pumice.locationcode, "shannon")
pumice.simpson <- specnumber~locationcode(pumice.locationcode, "simpson")
pumice.richness <- specnumber~locationcode(pumice.locationcode)
pumice.pielou <- pumice.shannon / log(pumice.richness)
Error in log(pumice.richness) : 
  non-numeric argument to mathematical function

我试图将其转换为向量,因为我认为 R 可能使用以下方法读取此数据作为一个因素:

as.numeric(levels(f))[f]

但我无法在这里得到结果,也许这不是问题。

4

1 回答 1

1

您对如何在 R 中调用函数有一些严重的误解。您在哪里见过涉及specnumber()格式的调用:

specnumber ~ locationcode(pumice.locationcode, "shannon")

??

您正在将公式固定到某个未知函数的函数调用上locationcode

鉴于您显示的代码混乱,我真的知道您想做什么,但问题的根源显然是您正在形成公式对象,pumice.shannon然后pumice.richness尝试对这些公式对象进行数学运算。

您似乎也在尝试寻找您似乎需要的东西specnumber()diversity()

这似乎复制了您想要实现的目标(使用可重现的示例)

data(BCI)
rich <- specnumber(BCI)
shan <- diversity(BCI, "shannon")
shan / log(rich)

这使:

> shan / log(rich)
        1         2         3         4         5         6         7         8 
0.8865579 0.8685692 0.8476046 0.8752597 0.8602030 0.8500724 0.8706729 0.8729254 
        9        10        11        12        13        14        15        16 
0.8358867 0.8561634 0.8642843 0.8347024 0.8786069 0.8762317 0.8729284 0.8641446 
       17        18        19        20        21        22        23        24 
0.8244489 0.8788828 0.8554245 0.8853802 0.8639438 0.8325271 0.8841064 0.8738548 
       25        26        27        28        29        30        31        32 
0.8755378 0.8751655 0.8661975 0.8314621 0.8281171 0.8419326 0.8575355 0.8453403 
       33        34        35        36        37        38        39        40 
0.8397172 0.8451677 0.5978626 0.8505725 0.8468656 0.7978912 0.7968043 0.7382083 
       41        42        43        44        45        46        47        48 
0.8762204 0.8881987 0.8387881 0.8431126 0.8213811 0.8554539 0.8477709 0.8676229 
       49        50 
0.8377231 0.8618931
于 2015-03-10T16:10:10.390 回答