我有几个存储在目录中的.csv数据文件,我需要将它们全部导入到R.
每个.csv在导入R时都有两列。但是,第1001行需要存储为每个.csv文件的单独变量(它对应于模拟期间存储在此处的预期值; I希望它在主要数据之外)。
到目前为止,我有以下代码将我的.csv文件导入为矩阵。
#Load all .csv in directory into list
dataFiles <- list.files(pattern="*.csv")
for(i in dataFiles) {
#read all of the csv files
name <- gsub("-",".",i)
name <- gsub(".csv","",name)
i <- paste(".\\",i,sep="")
assign(name,read.csv(i, header=T))
}
这产生了几个具有命名约定“sim_data_L_mu”的矩阵,其中L和mu是来自模拟的参数。如何从每个矩阵中删除第1001行(第一列中有数字,第二列为空)并将其存储为名为“sim_data_L_mu_EV”的变量?我遇到的主要问题是我不知道如何在for循环中调用所有新创建的矩阵。
答案 0 :(得分:0)
无法在评论中发布长代码,所以我写在这里:
# Use dialog to select folder
# Full names are required to access files that are not in the current working directory
file_list <- list.files(path = choose.dir(), pattern = "*.csv", full.names = T)
big_list <- lapply(file_list, function(z){
df <- read.csv(z)
scalar <- df[1000,1]
return(list(df, scalar))
})
要从第三个文件访问标量值,您可以使用
big_list[[3]][2]
big_list
中的元素遵循file_list
的顺序,因此您始终知道数据来自哪个文件。
如果您使用data.table::fread()
而不是read.csv
,则可以使用分配列名,选择要读取的行/列等。对于大型数据文件,它也要快得多。
希望这有帮助!