我有一个具有以下值的变量
sce_list[[1]]$total_counts
1 3794
2 2133
3 3482
4 1522
5 3385
6 5495
我想用ggplot制作一个直方图
我正在做的是:
ggplot(as.data.frame(size=1:length(sce_list[[1]]),
count=sce_list[[1]]$total_counts,
aes(x=count, y=size))
) +
geom_histogram()
任何人都可以现在让我出问题的地方给我一个解决办法。
注意:我按照评论中的建议应用了以下内容
for (i in 1:length(paths)){
ggplot((size=1:length(as.data.frame(sce_list[[i]]))),
count=as.data.frame(sce_list[[i]]$total_counts),
aes(x=count, y=size)) + geom_histogram()}
我得到的错误是:
Quitting from lines 121-150 (tq.Rmd)
Error in as.vector(x) : no method for coercing this S4 class to a vector
Calls: <Anonymous> ... ggplot -> as.data.frame -> as.data.frame -> as.vector
Execution halted
谢谢
答案 0 :(得分:1)
我将基于对您所做的猜测来说明可重复的示例。
由于您似乎没有这些列的名称并且要强制使用数据框,因此我认为您的数据不是数据框或小标题。由于它似乎有两列,因此它不是向量。因此,我假设它是一个具有两列的矩阵。
当您遇到复杂的嵌入问题时,例如,您需要将其分解成几块,以确保每一块都能工作。请注意应答者如何复制和粘贴下面的代码。
x <- matrix(1:6, c(3794, 2133, 3482, 1522, 3385, 5495), ncol=2)
sce_list <- list()
sce_list$total_counts <- x
让我们将其强制到数据框,看看它是什么样。
as.data.frame(sec_list$total_counts)
V1 V2
1 1 794
2 2 2133
3 3 3482
4 4 1522
5 5 3385
6 6 5495
好的,现在我们知道变量名是V1和V2。由于我们试图制作一个最小的可复制示例,因此我们不会更改名称。
现在让我们来做ggplot。
直方图是连续数据的一种非常特殊的图。
ggplot(as.data.frame(sce_list$total_counts), aes(V2)) +
geom_histogram()
但是,具有6个数据点且没有重复项的直方图实际上没有任何意义,因此我认为您可能需要绘制实际值,在这种情况下,您将需要geom_col()。 (也是因为您称他们为计数)
ggplot(as.data.frame(sce_list$total_counts),
aes(x= V1,y=V2)) +
geom_col()
但这只是一个猜测,因为没有提供所需的信息。