R 如何从多个文本文件中获取特定的列和行值?

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,:));

我有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,:));
    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