Для таких новичков, как я, эти ресурсы помогли:
Найти файл apc.ini, чтобы внести изменения, рекомендованные c33s выше, и установить рекомендуемые суммы: http: //www.untwistedvortex. com / optimizing-tuning-apc-alternate-php-cache /
Понимание того, что apc.ttl: http://www.php.net/manual/en/apc .configuration.php # ini.apc.ttl
Понимание того, что apc.shm_size: http://www.php.net/manual/en/apc.configuration.php # ini.apc.shm размер
Обычно я использую следующий подход, основанный на dplyr / tidyr:
data = tibble(File = files) %>%
extract(File, "Site", "([A-Z]{2}-[A-Za-z0-9]{3})", remove = FALSE) %>%
mutate(Data = lapply(File, read_csv)) %>%
unnest(Data) %>%
select(-File)
Вам просто нужно написать свою собственную функцию, которая читает csv и добавляет нужный столбец, прежде чем объединять их.
my_read_csv <- function(x) {
out <- read_csv(x)
site <- str_extract(x, "[A-Z]{2}-[A-Za-z0-9]{3}")
cbind(Site=site, out)
}
filenames <- list.files(path, full.names = TRUE, pattern = fileptrn, recursive = TRUE)
tbl <- lapply(filenames, my_read_csv) %>% bind_rows()
Здесь вы можете использовать purrr::map2
, который работает аналогично mapply
filenames <- list.files(path, full.names = TRUE, pattern = fileptrn, recursive = TRUE)
sites <- str_extract(filenames, "[A-Z]{2}-[A-Za-z0-9]{3}") # same length as filenames
library(purrr)
library(dplyr)
library(readr)
stopifnot(length(filenames)==length(sites)) # returns error if not the same length
ans <- map2(filenames, sites, ~read_csv(.x) %>% mutate(id = .y)) # .x is element in filenames, and .y is element in sites
. Вывод map2
- это список, аналогичный lapply
Если вы иметь версию развития purrr
, вы можете использовать imap
, которая является оберткой для map2
с индексом
Вы можете создать вектор имен файлов на основе «сайтов» с той же длиной, что и tbl, а затем объединить два, используя cbind
### Get file names
filenames <- list.files(path, full.names = TRUE, pattern = fileptrn, recursive = TRUE)
sites <- str_extract(filenames, "[A-Z]{2}-[A-Za-z0-9]{3}")
### Get length of each csv
file_lengths <- unlist(lapply(lapply(filenames, read_csv), nrow))
### Repeat sites using lengths
file_names <- rep(sites,file_lengths))
### Create table
tbl <- lapply(filenames, read_csv) %>%
bind_rows()
### Combine file_names and tbl
tbl <- cbind(tbl, filename = file_names)
File
после того, как мы закончили с ним. Что касается поиска рабочего процесса, трудно следовать: это временно. Как только вы привыкнете к потоку трубопровода dplyr, это станет без усилий. Тем не менее, я теперь изменил выражения, чтобы свести код чтения данных. – Konrad Rudolph 19 September 2017 в 13:34