R Functionals не работает при пакетном присвоении имен переменным - PullRequest
0 голосов
/ 28 августа 2018

Я хочу использовать функционалы для пакетного присвоения имен файлам данных CSV, я проверил функционалы, включая Map, mapply, lapply с функцией assign для замены <-, однако все эти функционалы делают не работа, а только традиционная для петель работа, кто-нибудь может объяснить это? Заранее спасибо!

Вот мой код:

allData <- c("Actinomyces.csv", "Bacteria.csv", "COD.csv", "Fungi.csv", "NH3.csv", "NO2.csv", "NO3.csv", "TN.csv", "TP.csv")
#CSV files in the working path
csvs <- lapply(allData, read.csv)
#Store data frames into a list
nameList <- c("Actinomyces", "Bacteria", "COD", "Fungi", "NH3", "NO2", "NO3", "TN", "TP")
lapply(c(1:9), function(i){assign(nameList[i], csvs[[i]])})
#Doesn't work
Map(assign, nameList, csvs)
#Doesn't work either
mapply(assign, nameList, csvs)
#Doesn't work again
for (i in 1:9){
    assign(nameList[i], csvs[[i]])
}
#Only this works

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Более типичная формулировка для этой задачи будет начинаться здесь:

csvs <- lapply(allData, read.csv)

и в этот момент ваши данные хорошо сохраняются в списке. Если вы хотите именованный список, вы можете просто сделать:

nameList <- c("Actinomyces", "Bacteria", "COD", "Fungi", "NH3", "NO2", "NO3", "TN", "TP")
csvs <- setNames(csvs, nameList)

И затем вы можете обратиться к любому из наборов данных по имени через csvs[["COD"]], например.

0 голосов
/ 28 августа 2018

Вот два основных способа R:

junk <- Map("assign", nameList, csvs, MoreArgs = list(.GlobalEnv))

list2env(setNames(csvs, nameList), .GlobalEnv)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...