cols()
は []
で切り出せないらしい
dirname <- "data" d <- dir(dirname) %>% map_dfr(function(x){ # 先頭行を見て列数を判定する ncol <- readLines(file.path(dirname, x), n=1) %>% str_split(",") %>% .[[1]] %>% length() col_names <- c("V1", "V2", "V3", "V4", "V5") col_names <- col_names[1:ncol] # expr()[1] は cols() なので ncol + 1 まで # col_integer() とかだとこれでは無理なので "i" とかでやる col_types <- eval(expr(cols("i", "c", "c", "i", "c"))[1:(ncol + 1)]) d <- read_csv(file.path(dirname, x), col_names = col_names, col_types = col_types) d } ) head(d)