【发布时间】:2019-07-25 09:36:47
【问题描述】:
第一次海报,长期奋斗者。
我正在尝试从最初从.asc 文件导入的数据框组成的列表中提取数据。我需要从所有文件的一列或多列中提取多行数据。
我可以使用sapply 函数提取单行列,但在从构成列表的数据的同一列中提取多行时遇到问题。我试图查看处理此问题的帖子,但找不到解决方案。
设置工作目录
setwd ("C/....")
请来.asc files (4,032 files, [80R, 48C] each)
temp <- list.files (pattern = "*.asc")
创建对象
myfiles <- lapply (temp, read.delim, header = False, skip = 6, sep = "")
检查格式(担心导入.asc文件)
print(myfiles)
结构很好,没有 NA 并且对齐
单行,所有文件的列
sapply(myfiles, function(x) x[35,14])
到这里为止,一切正常,我得到了我想要的——所有值的索引输出
[1] 13 10 25 37 48 46 38 45 41 35 28 15 26
[14] 48 13 41 37 32 24 25 28 32 41 29 28 27
我现在可以为第 14 列中的每行 36 到 42 创建一个新的代码行来满足我的需要,例如:
sapply(myfiles, function(x) x[36,14])
sapply(myfiles, function(x) x[37,14])
sapply(myfiles, function(x) x[38,14]), etc. to
sapply(myfiles, function(x) x[42,14])
但我想我应该能够一次提取这些并将它们导出为 .csv 文件。我的循环尝试失败了,因为我获得了整个列表的每一列和每一行的所有数据。另外,我可以为此添加不同的系列,例如 [52:62, 18:24] 并导出每个系列吗?
data1 <- sapply(myfiles, function(x)
{
x[35:42, 14]
return(x)
})
有什么建议吗?非常感谢您的帮助。
【问题讨论】:
-
或许可以试试
sapply(myfiles, function(x) x[36:42,14])? -
是的,我之前尝试过这个,还有涉及 '[' 的变体并且没有任何运气——这实际上有 [,1] [,2] [,3] 的输出我的文件限制为 [,4032]。基本上,函数循环遍历的文件数的索引。
标签: r data-extraction