R 如何从多个文本文件中获取特定的列和行值?
我有36个文本文件的文件夹“数据”。每个文件还有3000多个列和行。我想得到特定的列和行值作为向量 例如,第10列和第10行。我想通过循环获得文件夹“Data”中36个文本文件的列和行的值。我是R的新手 这是我用matlab编写的代码R 如何从多个文本文件中获取特定的列和行值?,r,for-loop,R,For Loop,我有36个文本文件的文件夹“数据”。每个文件还有3000多个列和行。我想得到特定的列和行值作为向量 例如,第10列和第10行。我想通过循环获得文件夹“Data”中36个文本文件的列和行的值。我是R的新手 这是我用matlab编写的代码 function data = readImage data = []; listImage = ls('*.hdf'); for i = 1:size(listImage,1) name = strtrim(listImage(i,:));
function data = readImage
data = [];
listImage = ls('*.hdf');
for i = 1:size(listImage,1)
name = strtrim(listImage(i,:));
citra = hdfread(name,'PIXEL DATA');
result = point(citra);
data = [data; result];
end
end
及
我已成功导入文件
setwd("D:/data")
temp = list.files(pattern="*.txt")
for (i in 1:length(temp)) assign(temp[i], read.table(temp[i]))
如果要从文件集合中获取特定的行和列,建议使用
data.table::fread()
。通过select
参数,它变得非常简单。使用它,您可以选择列,再加上skip
和nrow
,以获取任意数量的行。请尝试以下方法,从每个文件中仅读取第10行第10列-
library(data.table)
datalist <- lapply(temp, fread, select = 10, skip = 9, nrow = 1)
现在您已经有了一个包含命名元素的列表,可以使用$
操作符按名称访问这些元素。这通常比将它们全部分配到全局环境要好
datalist
中的列表元素将是数据表。如果您需要单个原子向量元素,则以下可能更好-
datalist <- lapply(temp, function(x) fread(x, select=10, skip=9, nrow=1)[[1L]])
如果要从文件集合中获取特定的行和列,建议使用
data.table::fread()
。通过select
参数,它变得非常简单。使用它,您可以选择列,再加上skip
和nrow
,以获取任意数量的行。请尝试以下方法,从每个文件中仅读取第10行第10列-
library(data.table)
datalist <- lapply(temp, fread, select = 10, skip = 9, nrow = 1)
现在您已经有了一个包含命名元素的列表,可以使用$
操作符按名称访问这些元素。这通常比将它们全部分配到全局环境要好
datalist
中的列表元素将是数据表。如果您需要单个原子向量元素,则以下可能更好-
datalist <- lapply(temp, function(x) fread(x, select=10, skip=9, nrow=1)[[1L]])
请分享到目前为止您已经尝试过的内容。我已经编辑了我的帖子。您的R代码是否在每次迭代中成功导入您的文本文件?如果没有,请在此处查看问题的该部分:。如果你能做到这一点,那么你需要一个简单的循环来遍历所有文件,并在位置(10,10)选取元素。现在,我需要一个循环来获取每个文件的列值和行值,作为位置[10,10]处的向量示例。请分享到目前为止您已经尝试过的内容。我已经编辑了我的帖子。您的R代码是否在每次迭代中成功导入了您的文本文件?如果没有,请在此处查看问题的该部分:。如果你能做到这一点,那么你需要一个简单的循环来遍历所有文件,并在位置(10,10)选取元素。现在我需要一个循环来获取每个文件的coulumn和row值,作为位置[10,10]处的向量示例
## write iris to a csv file
write.csv(iris, file = "iris.csv", quote = FALSE, row.names = FALSE)
temp <- rep("iris.csv", 3)
datalist <- lapply(temp, function(x) fread(x, select=2, skip=3, nrow=1)[[1L]])
names(datalist) <- paste0("temp", seq_along(datalist))
## results
datalist
# $temp1
# [1] 3.2
#
# $temp2
# [1] 3.2
#
# $temp3
# [1] 3.2
unlist(datalist)
# temp1 temp2 temp3
# 3.2 3.2 3.2
## compare to
iris[3, 2]
[1] 3.2