mutate_impl(.data,dots)出错:找不到绑定

时间:2017-05-06 07:58:15

标签: r

我想将我的几个文件合并到一个文件中。我从网站上的一个帖子中找到了代码,并按照我自己的用法进行了调整:

library(dplyr)
library(readr)

df2 <- list.files(pattern = "test_.*\\.csv",full.names = TRUE) %>% 
  lapply(read_csv) %>% 
  bind_rows %>% 
  transmute(Isolate=Iso,
            Condit=Condit,
            rep=rep,
            set=set,
            hpi=hpi,
            OD=OD) 

但是我收到了这个错误:

Error in mutate_impl(.data, dots) : binding not found: 'Iso'

我不明白为什么。有人能帮助我吗?

非常感谢!

输入文件1:test_.1.csv

    Iso rep set Condit  hpi OD
1   A22.1   1   3   T27 84  0.232
2   A22.1   2   3   T27 84  0.23
3   A22.1   3   3   T27 84  0.214
4   D2.1    1   3   T27 84  0.049
5   D2.1    2   3   T27 84  0.054
6   D2.1    3   3   T27 84  0.049

输入文件2:test_.2.csv

    Iso rep set Condit  hpi OD
1   A22.1   1   3   T27 72  0.191
2   A22.1   2   3   T27 72  0.186
3   A22.1   3   3   T27 72  0.179
4   D2.1    1   3   T27 72  0.048
5   D2.1    2   3   T27 72  0.053

1 个答案:

答案 0 :(得分:2)

我已运行您的代码并收到相同的错误消息

  

错误:未找到绑定:'Iso'

read_csv包中的原因似乎是readr。当用于读取单个文件时,

read_csv("test_.1.csv")

返回:

Parsed with column specification:
cols(
  `Iso   rep set Condit  hpi OD` = col_character()
)
# A tibble: 6 × 1
  `Iso   rep set Condit  hpi OD`
                           <chr>
1  A22.1   1   3   T27 84  0.232
2   A22.1   2   3   T27 84  0.23
3  A22.1   3   3   T27 84  0.214
4  D2.1    1   3   T27 84  0.049
5  D2.1    2   3   T27 84  0.054
6  D2.1    3   3   T27 84  0.049

所以,read_csv显然不知道如何将行拆分成列。

使用fread()包中rbindlist()data.table的代码对我有用。它会根据OP的请求更改Iso列的名称。此外,它还会添加一列指示每行的来源。

file_names <- list.files(pattern = "test_.*\\.csv", full.names = TRUE)
library(data.table)
df2 <- 
  rbindlist(
    lapply(file_names, fread), idcol = "file_id"
  )[, file_id := basename(file_names)[file_id] # add origin
    ][, setnames(.SD, "Iso", "Isolate")] # rename one column

df2
#        file_id Isolate rep set Condit hpi    OD
# 1: test_.1.csv   A22.1   1   3    T27  84 0.232
# 2: test_.1.csv   A22.1   2   3    T27  84 0.230
# 3: test_.1.csv   A22.1   3   3    T27  84 0.214
# 4: test_.1.csv    D2.1   1   3    T27  84 0.049
# 5: test_.1.csv    D2.1   2   3    T27  84 0.054
# 6: test_.1.csv    D2.1   3   3    T27  84 0.049
# 7: test_.2.csv   A22.1   1   3    T27  72 0.191
# 8: test_.2.csv   A22.1   2   3    T27  72 0.186
# 9: test_.2.csv   A22.1   3   3    T27  72 0.179
#10: test_.2.csv    D2.1   1   3    T27  72 0.048
#11: test_.2.csv    D2.1   2   3    T27  72 0.053