我有多个csv文件(超过100个)。每个文件代表一个时间段。在每个文件中,有29行需要滑行(文本行)。在第30行,我有一个温度矩阵作为纬度和经度坐标的函数。例如:在纬度68.80和经度48.40268,温度是5.94。
所以,我想在每个时间段(对于每个文件)的纬度和经度坐标的特定组合中提取温度。
我可以为单个文件编写代码,但我很害怕我不知道如何在循环中执行它或如何使其更快。
感谢任何帮助,谢谢。很抱歉,如果这与其他问题相似,我会阅读有关该主题的内容,但它似乎不符合我的问题。
一个文件的代码:
filenames <- list.files(path="E:/Documents...")
fileone <- read.csv(filenames[1], skip=29, header=T, sep=";")
names(fileone) <- c("Lat", "68.88", "68.86", "68.85", "68.83", "68.82", "68.80", "68.79", "68.77", "68.76", "68.74", "68.73", "68.71")
Tempone <- fileone[which(fileone$Lat==48.40268), "68.80"]
答案 0 :(得分:3)
假设相对于您的系统的数据大小足够小(相对于您的系统) 为了完全融入记忆,你可以使用列表一次性完成这个任务
## Grab the filienames, just like you're doing
filenames <- list.files(path="E:/Documents...")
## Assuming all columns have the same column names
c.nms <- c("Lat", "68.88", "68.86", "68.85", "68.83", "68.82", "68.80", "68.79", "68.77", "68.76", "68.74", "68.73", "68.71")
## Import them all in one shot, as a list of data.frames
AllData <- lapply(filenames, read.table,
skip=29, header=TRUE, sep=";", row.names=NULL, col.names=c.nms)
## Then to get all of your rows
PulledRows <-
lapply(AllData, function(DF)
DF[fileone$Lat==48.40268, "68.80"]
)
如果您为每个文件提取不同的纬度/经度,则可以将mapply
与纬度/长度的向量/列表一起使用