我正在尝试使用循环来操纵多个文件,而且还要在每个循环周期中保留变量/输出的名称。
以下是我要执行的操作的示例:
['very low', 'very low', 'low', 'low', 'medium', 'medium', 'medium', 'high', 'very high', 'very high']
所以我现在要拥有六个可以调用的变量(最后三个是数据帧)。显然,我实际上要做的是一遍又一遍地覆盖#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
这是我第一次使用r,所以如果我写的东西(或者也许我想要实现的东西)看起来很奇怪,我也不会感到惊讶。
(对于某些上下文,如果要紧:我试图操作然后从文本文件中绘制数据。但是,我确实需要检查for循环的每个阶段(例如,我创建的数据框架),这样我就可以检查自己在做什么。这也是帮助我可视化所做更改的关键,因为我不习惯使用矩阵,而且以后可能需要返回到特定的数据帧。)
答案 0 :(得分:1)
因此,如果我做对了,您想在循环中将文件名添加到源中,然后加载相应的数据。如果是这样,我建议您这样做
# 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列而另一个df是否具有4列并不重要。