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
主要目标:从每个站点的三个重复样本中计算每个站点每个物种的平均丰度 关键变量: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