【问题标题】:Unexpected error message while extracting vectors from a list从列表中提取向量时出现意外错误消息
【发布时间】:2019-07-31 08:55:37
【问题描述】:

我想从文本文件列表中提取向量。

首先定义正确的“工作目录”,然后生成一个包含测试文件的列表。

file.list <- list.files(pattern="*.txt", full.names=T)

然后我以正确的方式格式化数据。

datalist = lapply(file.list, FUN=read.table, header = F, sep = "\t", skip = 2)

最后我定义了应该被提取的向量。

cmbn = expand.grid(1:641, 1:977)
flen = length(datalist)
lapply(1:(nrow(cmbn)),function(t,lst,cmbn){
  return(sapply(1:flen,function(i,t1,lst1,cmbn1){
    return(lst1[[i]][cmbn1$Var1[t1],cmbn1$Var2[t1]])},t,lst,cmbn))}
  ,datalist,cmbn)

最后我得到了所有向量的输出。但是我怎样才能巧妙地存储它们呢?我希望能够单独访问向量。

【问题讨论】:

  • 只是猜测。但是通过你的问题file.list &lt;- list.files(pattern="*.txt", full.names=T) 只包含文件的名称,而不是文件中的数据。请分享nrow(file.list[[1]])ncol(file.list[[1]]) 的输出。如果您的文件以逗号分隔,您可以使用read.csv() 读取文件。

标签: r list function vector dimension


【解决方案1】:

错误消息“维度数不正确”表示lst1[[i]] 不具有两个维度。当dim返回NULL时,说明lst1[[i]]既不是矩阵也不是数组。

尝试使用str(lst1[[i]]) 查看元素的structure。是向量吗?是别的吗?还是只是缺少 (NULL)?

当您知道问题所在时,您可以修复它。它可能正在读取一个空文件,或者您正在读取列表边界之外的索引,因为??

【讨论】:

  • 我的方法确实有问题。当我检查 lst1 元素 (str(lst1[[i]]) 的结构时,我得到的响应是:object 'lst1' not found
  • 问题可能出在我生成列表的步骤上吗?是否需要更多信息。例如:header = F, sep="\t"
  • 我们不能说。我们对您的文件、它们的名称、它们的数据结构一无所知,因此问题可能出在您计算机内部的任何地方。此外,您还完全将您的问题改成了其他问题,但没有解释您所做的事情或原因,或者您想要完成的事情。
猜你喜欢
  • 2020-08-21
  • 1970-01-01
  • 2022-08-16
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
相关资源
最近更新 更多