我有一个具有多种处理方式的数据集,这些数据集是通过read.csv导入到R中的。然后,我对数据进行了处理(以各种方式对其进行了归一化处理),现在有4个针对我的4种处理方法(listA,listB,listC,listD)的独立,标准化观察值列表。这些数据不成对,代表独立的观察结果(例如,a = 5和b = 6的样本量)。我想将这些列表组合成一个新的数据文件(可能是.csv或数据框),可以从中进行统计(ANOVA)和制图(箱形图)。最终数据集不应只是简单地将所有值附加到一个列表中的列表,而应根据其来自哪个列表将每个值列在一个列中。例如。 5.5 5 4.8 5.5 5.3 b 2.2 b 3.1 等
我尝试附加,但是输出仅列出值,而不是值旁边的样本名称(a-d)。
payload
我得到这个结果:
my_list <- list(a= listA, b= listB, c= listC, d=listD)
my_list
但是我想看到一个有两列的表
$a
[1] 5.5 5 4.8 5.5 5.3 5.5 5.3
$b
[1] 2.2 3.1
尝试执行as.data.frame会产生此错误:
my_df <-as.data.frame(my_list) 错误(函数(...,row.names = NULL,check.rows = FALSE,check.names = TRUE,: 参数暗示不同的行数:
答案 0 :(得分: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
答案 1 :(得分:1)
一个选项:
library(dplyr)
listA <- c(5, 3, 7)
listB <- c(2, 4)
bind_rows(
enframe(listA, name = NULL) %>% mutate(df = "a"),
enframe(listB, name = NULL) %>% mutate(df = "b")
)
答案 2 :(得分:0)
这将是一种实现方式:
x=(unlist(my_list))
df=data.frame(treatment=substring(names(x),1,1), #the substring chops off the numerical part from the names given by unlist
values=x)