Имена динамических переменных, которые хранятся в цикле For (r) - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь использовать цикл для управления несколькими файлами, а также для сохранения имен переменных / выходов в каждом цикле цикла.

Вот пример того, что я пытаюсь сделать:

#define my source
SourceDir <- file.path('where/it/is')

#define my array
Wpns <- ('Bren', 'Welrod', 'Vickers')

#start for-loop
for (Wpn in Wpns){

    #example of for loop contents 1 (is this a sensible way to get a file path?)
    WpnFile <- file.path(paste0(SourceDir, '/My'_, Wpn, '_File.txt')

    #example of for loop contents 2
    WpnDataFrame <- read_delim(WpnFile, ' ')

}

Итак, я хочу, чтобы у меня было шесть переменных (последние три - фреймы данных), которые я мог бы вызвать для просмотра.Очевидно, что я на самом деле собираюсь перезаписать WpnFile и WpnDataFrame снова и снова.

BrenFile
WelrodFile
VickersFile

BrenDataFrame
WelrodDataFrame
VickersDataFrame

Это первый раз, когда я использовал r, поэтому я не удивлюсь, если янаписал (или, может быть, то, что я пытаюсь достичь) выглядит странно.

(Для некоторого контекста, если это имеет значение: я пытаюсь манипулировать и затем наносить данные из текстового файла. Однако мне действительно нужнопроверять каждый этап моего цикла for (например, фреймы данных, которые я создаю), чтобы я мог проверить, что я делаю. Это также помогает мне визуализировать изменения, которые я делаю, так как я не привык работатьс матрицами и дополнительно мне может понадобиться вернуться к конкретным кадрам данных позже.)

1 Ответ

1 голос
/ 07 апреля 2019

Так что, если я правильно понял, вы хотите добавить имена файлов к источнику в цикле, а затем загрузить соответствующие данные.Если это так, я могу предложить сделать

# define my source
SourceDir <- file.path('where/it/is') # unchanged

#define my array
Wpns <- c('Bren', 'Welrod', 'Vickers') # you must use c()

# creating an empty list for your data being loaded
WpnDataFrame <- mylist <- vector("list", length(Wpns))
# naming the list
names(WpnDataFrame) <- Wpns

# creating a vector for the file paths
WpnFile <- rep(NA, length(Wpns))

# i can not show it with real data since my pc has other file paths then yours so here is some data for demonstration
df <- 1:3

# running for loop
for(i in 1:length(Wpns)){
# saving each file path
WpnFile[i] <- file.path(paste0(SourceDir, '/My_', Wpns[i], '_File.txt'))

# loading the data
# for demonstration:  
WpnDataFrame[[Wpns[i]]] <- df[i] 
# you want to do this: 
# WpnDataFrame[[Wpns[i]]] <- read_delim(WpnFile, ' ')
}

Это даст вам

WpnFile
[1] "where/it/is/My_Bren_File.txt"    
"where/it/is/My_Welrod_File.txt" 
[3] "where/it/is/My_Vickers_File.txt"

WpnDataFrame
$Bren
[1] 1
$Welrod
[1] 2
$Vickers
[1] 3

Некоторые примечания: я использовал список классов для WonDataFrame, так как я не уверен, находятся ли загружаемые данные в том жеформат (такое же количество столбцов, столбцы в том же порядке).В списке не имеет значения, если один df имеет 3 столбца, а другой - 4.

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