获取使用purrr :: map

时间:2017-10-24 11:52:45

标签: r tidyverse purrr

我使用purrr :: map检索了一个csv文件列表并获得了一个大列表。

  csv_files <- list.files(path = data_path, pattern = '\\.csv$', full.names = TRUE)
  all_csv <- purrr::map(csv_files, readr::read_csv2)
  names(all_csv) <- gsub(data_path, "", csv_files)
  return all_csv

按照@Spacedman的建议编辑

我还需要在 process_csv_data 函数中单独处理每个tibble /数据帧。

purrr::map(all_csv, process_csv_data)

如何在没有for循环的情况下检索大型列表中单个项目的名称?

2 个答案:

答案 0 :(得分:6)

使用map2,如此可重现的示例:

> L = list(a=1:10, b=1:5, c=1:6)
> map2(L, names(L), function(x,y){message("x is ",x," y is ",y)})
x is 12345678910 y is a
x is 12345 y is b
x is 123456 y is c

函数中x列表的输出有点message,但它是L的列表元素。

答案 1 :(得分:4)

您可以利用purrr将所有数据保存在单个嵌套的tibble中。这样,每个csv和已处理的csv仍然与相应的csv-name直接链接:

ffmpeg