reshape2 返回 "Error in .fun(.value[0], ...) : 3 arguments passed to 'length' which requires 1"

reshape2 returning "Error in .fun(.value[0], ...) : 3 arguments passed to 'length' which requires 1"

主要目标:从每个站点的三个重复样本中计算每个站点每个物种的平均丰度 关键变量:Site.Number、复制、物种。

我有多个重复样本,需要合并为一个样本单元进行统计分析。采样的两个微生境被分成两个独立的框架,允许将数据框架减少到站点数、生境类型、重复数和 197 个物种:

sev.mci.bank <- group_by(sev.mci.banklog[sev.mci.banklog$Habitat == "Bank Sweeps", ])
sev.mci.log <- group_by(sev.mci.banklog[sev.mci.banklog$Habitat == "Log Wash", ])

然后我尝试使用 reshape2 对重复样本进行平均,以便通过首先将物种数据重新排列为单列形式,将每个站点的每个物种的样本数量从三个减少到一个。

library(reshape2)
as.data.frame(sev.mci.bank)

column.bank <- melt(sev.mci.bank, id=c('Site.Number', 'Habitat', 'Replicate'))

这很好用,但是..

mean.bank <- acast(column.bank, Site.Number + Habitat ~ variable, value='value', FUN=mean)

运行 这个代码 returns

"Error in .fun(.value[0], ...) : 3 arguments passed to 'length' which requires 1""

请帮忙!我不知道从这里去哪里。我最初尝试使用 tidyverse 来做到这一点,欢迎任何建议。 此代码位于 rbloggers.com

我的完整代码:

sev.mci.banklog <- read.csv ("/Users/Chloe/Desktop/Environmental Data Analysis/EDA.working.directory/SEVMCI_data_bank_log.csv")

sev.mci.bank <- group_by(sev.mci.banklog[sev.mci.banklog$Habitat == "Bank Sweeps", ])
sev.mci.log <- group_by(sev.mci.banklog[sev.mci.banklog$Habitat == "Log Wash", ])

library(reshape2)
as.data.frame(sev.mci.bank)
head(sev.mci.bank)

column.bank <- melt(sev.mci.bank, id=c('Site.Number', 'Habitat', 'Replicate'))
mean.bank <- dcast(column.bank, Site.Number + Habitat ~ variable, value='value', FUN=mean)

我的数据: link to .csv

谢谢!

如果我对你的代码的理解是正确的,你想按地点数量和栖息地计算平均物种数。在这种情况下,请尝试这种 tidyverse 方法。

然后您可以使用 例如 %>% filter(Habitat == "Bank Sweeps") 对结果进行子集化。

library(tidyverse) # provides readr, dplyr, tidyr

SEVMCI_data_bank_log <- read_csv("/Users/Chloe/Desktop/Environmental Data Analysis/EDA.working.directory/SEVMCI_data_bank_log.csv")

bank_mean <- SEVMCI_data_bank_log %>% 
  gather(species, count, -Replicate, -Habitat, -`Site Number`) %>% 
  group_by(`Site Number`, Habitat, species) %>% 
  summarise(mean_count = mean(count))

bank_mean

# A tibble: 1,970 x 4
# Groups:   Site Number, Habitat [?]
   `Site Number` Habitat     species        mean_count
           <int> <chr>       <chr>               <dbl>
 1          7171 Bank Sweeps Acanthophlebia      0.   
 2          7171 Bank Sweeps Acarina             0.667
 3          7171 Bank Sweeps Acroperla          43.3  
 4          7171 Bank Sweeps Aeshna              0.   
 5          7171 Bank Sweeps Alloecentrella      0.   
 6          7171 Bank Sweeps Ameletopsis         0.   
 7          7171 Bank Sweeps Amphipoda           5.33 
 8          7171 Bank Sweeps Ampullariidae       0.   
 9          7171 Bank Sweeps Anisopodidae        0.   
10          7171 Bank Sweeps Anisops             0.   
# ... with 1,960 more rows