使用for循环从文本文件中提取数据

时间:2017-05-27 15:48:17

标签: r

我有40个名称为

的文本文件
$("#textInput").submit(function (e) {

console.log("123");
)};

我需要提取一个特定的数据,我知道如何单独进行,但这需要一段时间:

[1] "2006-03-31.txt" "2006-06-30.txt" "2006-09-30.txt" "2006-12-31.txt" "2007-03-31.txt"
[6] "2007-06-30.txt" "2007-09-30.txt" "2007-12-31.txt" "2008-03-31.txt" etc... 

有人可以帮助我使用for循环,它可以从特定列中提取数据并在所有不同的文本文件中行吗?

3 个答案:

答案 0 :(得分:2)

假设您的文件都在同一个文件夹中,您可以使用list.files获取所有文件的名称,然后循环浏览它们并获取所需的值。这样的事情呢?

m_value<-character() #or whatever the type of your variable is
filelist<-list.files(path="...", all.files = TRUE)
for (i in 1:length(filelist)){
   df<-read.table(myfile[i], h=T)
   m_value[i]<-df$Marknadsvarde_tot[1]
}

编辑:

如果您已经导入了所有可以使用的数据get

txt_files <- list.files(pattern = "*.txt") 
for(i in txt_files) { x <- read.delim(i, header=TRUE) assign(i,x) }

m_value<-character()
for(i in 1:length(txt_files)) {
  m_value[i] <- get(txt_files[i])$Marknadsvarde_tot[1]
}

答案 1 :(得分:1)

您可以使用select - fread的{​​{1}} - 参数来实现此目的:

data.table

这将产生一个数据表/数据帧列表。如果你只想要一个包含所有值的向量:

library(data.table)
file.list <- list.files(pattern = '.txt')
lapply(file.list, fread, select = 'Marknadsvarde_tot', nrow = 1, header = FALSE)

答案 2 :(得分:0)

temp = list.files(pattern="*.txt")
library(data.table)
list2env(
  lapply(setNames(temp, make.names(gsub("*.txt$", "", temp))), 
         fread), envir = .GlobalEnv)

Importing multiple .csv files into R

的现有答案中添加了data.table

获得所有文件后,您可以使用DT [i,j,k]从data.tables获取数据,其中我将成为您的条件