如何将多个不同长度的列表合并到一个表中?

1 r

我有一个具有多种处理方式的数据集,这些数据集是通过read.csv导入到R中的。然后,我对数据进行了处理(以各种方式对其进行了归一化),现在有4个针对我的4种处理方式(listA,listB,listC,listD)的独立,标准化观察值列表。这些数据不是成对的,代表独立的观察结果(例如,a = 5和b = 6的样本量)。我想将这些列表组合成一个新的数据文件(可能是.csv或数据框),可以从中进行统计(ANOVA)和制图(箱形图)。最终数据集不应只是简单地将所有值附加到一个列表中的列表,而应根据其来自哪个列表将每个值列在一个列中。例如5.5 a 5 a 4.8 a 5.5 a 5.3 b 2.2 b 3.1等

我尝试追加,但是输出仅列出值,而不是值旁边的样本名称(a-d)。

my_list <- list(a= listA, b= listB, c= listC, d=listD)
my_list

Run Code Online (Sandbox Code Playgroud)

我得到这个结果:

$a
 [1]  5.5 5 4.8  5.5  5.3  5.5  5.3
$b
 [1]  2.2 3.1 
Run Code Online (Sandbox Code Playgroud)

但我想看到有两列的表格

a 5.5
a 5
a 4.8
a 5.5
a 5.3
b 2.2
b 3.1
etc.
Run Code Online (Sandbox Code Playgroud)

尝试执行as.data.frame会产生以下错误:

my_df <-as.data.frame(my_list)错误(函数(...,row.names = NULL,check.rows = FALSE,check.names = TRUE,:参数暗示行数不同:

Shr*_*ree 6

您可以从基数R使用堆栈-

my_list <- list(a= c(5.5, 5, 4.8,  5.5,  5.3,  5.5,  5.3),
                b = c(2.2, 3.1))

stack(my_list)

  values ind
1    5.5   a
2    5.0   a
3    4.8   a
4    5.5   a
5    5.3   a
6    5.5   a
7    5.3   a
8    2.2   b
9    3.1   b
Run Code Online (Sandbox Code Playgroud)