首页 > 解决方案 > 基础问题:如何使用 R 将列表向量转换为表格?

问题描述

我有一个非常基本的问题,我无法找到答案,因为我不是 100% 清楚到底如何问它。我发现似乎合适的教程都有点过于简化,并且缺少一些关键信息。
我有一个已处理数据的列表向量,我正在尝试将其转换为表格以进行下游分析,但我被卡住了。目前我有一个包含 4088 个数字数据点的值列表。“数据”的元数据有我的子类型信息。我以这种方式生成了我的列表:

vec <-vector("list",3)
vec[[1]] <- Values[which(colData(Data)$Type=="Type1")] 
vec[[2]] <- Values[which(colData(Data)$Type=="Type2")] 
vec[[3]] <- Values[which(colData(Data)$Type=="Type3")] 

现在,[[1]] 仅具有我关心的类型 1 的值,类型 2 的 [[2]] 等。那么,我如何将其转换为数据帧或表以用于下游的东西,如组之间的 T 测试? 下面的读数告诉我我需要以某种方式定义我的数据并且我每组有不同数量的点是一个问题,但我在这里完全迷失了。

df <- as.data.frame(vec)
Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,  : 
  arguments imply differing number of rows: 1461, 658, 1969

感谢您的任何帮助,或者只是一个教程的方向,这将帮助我自己回答这个问题!

标签: rbioinformatics

解决方案


这实际上取决于您的下游步骤是什么,但是您可以生成data.frame最大长度lengths(vec)为 的行数(这将填充向量NA- 确保之后如何处理 NA)。如何获得这样的例子data.frame可以在@AndyBrown 的答案中找到

具体来说,要在组之间执行 t 检验,您不需要生成data.frame. 您可以使用可以具有不同长度的列表元素的成对组合。下面是一个使用列表元素的所有成对组合vec来执行 t 检验的示例:

lapply(combn(vec, 2, simplify=FALSE), function(x) t.test(x[[1]], x[[2]]))

推荐阅读