r - 如何绘制两个文件中的数据?
问题描述
我正在尝试绘制 5 个第一个值和 5 个最后一个数据。我有两个文件 A 和 B。
A 是顺序,这就是为什么我需要 5 和最后的 5。我想绘制另一个文件 B 中每个复制的强度。
如果在 B 中找到我在 A 中的名字以绘制所有值...
文件 B 与文件 A(以及更多)具有相同的行名,这就是为什么我想要 A 和 B 之间的共同行名,然后如果它们相等,我想从我的文件 B 中绘制每个复制(列)的所有值。所以最后,我将有 5 个地块用于 5first 和 5 个地块用于 5last。
我已经尝试过这样的事情,但就像我说的那样,我对 R 编程不是很好。
刚开始,我想看看我是否可以在两个文件之间建立链接。这行不通。
5fisrt <- A[1:5,]
5last <- A[(nrow(RT)-5+1):nrow(A), ]
i <- 0
for (i in 5fisrt)
{
if row.names(5fisrt[i]) == row.names(B[i])
plot <- boxplot(B,aes(B[i]))
print (plot)
}
我会在 5last 再做一次。
我该如何解决这个问题?
解决方案
如果我理解,您想为 B 中的每一行制作一个条形图,如果该行的名称与 A 的前 5 行或后 5 行之一的名称相同。
如果您想在一个图形中显示所有 10 个图,则可以使用 facet_grid:
library(tidyverse)
n <- nrow(A)
C <- B[row.names(A[c(1:5,(n-4):n),]),]
C %>%
mutate(rowName = row_number()) %>%
gather(key = 'replicates', value = 'intensity', -rowName) %>%
ggplot(
aes(
x = replicates,
y = intensity
)
) +
geom_col() +
facet_grid(rowName~.)
请注意,我的回答假设 A 中至少有 10 行。代码的第二行子集 B 如您所愿,并将其分配给新对象 C,只是为了代码清晰。我本可以在不定义 C 的情况下将 B 的子集直接传送到 mutate 中。
更新:
由于您不想使用 facet,您可以尝试以下方法之一:
library(tidyverse)
n <- nrow(A)
C <- B[row.names(A[c(1:5,(n-4):n),]),]
D <- C %>%
mutate(rowName = row_number()) %>%
gather(key = 'replicates', value = 'intensity', -rowName)
# Plot to the RStudio viewer
for(i in 1:10){
p <-
D %>%
filter(rowName == i) %>%
ggplot(
aes(
x = replicates,
y = intensity
)
) +
geom_col()
print(p)
}
# Save the plots to files
for(i in 1:10){
p <-
D %>%
filter(rowName == i) %>%
ggplot(
aes(
x = replicates,
y = intensity
)
) +
geom_col()
ggsave(paste0("myPlot",i,".png"), plot = p)
}
推荐阅读
- javascript - 如何导入已经导入另一个文件的文件?
- css - 仅在 prod 模式下使用 css 和 URL 背景图像进行角度缩小
- javascript - 清除 React Hooks 中未安装组件上的内存泄漏
- python - 函数签名中的星 *?
- c# - 我的代码有一些错误,我想知道是否有人可以指出要做什么
- ldap - 由于未在主服务器上启用 FIPS,FreeIPA 副本失败
- amazon-web-services - 用于查询 RDS 数据库的 AWS API
- python - 如何验证 Cerberus 中的嵌套字典对象
- c# - 美化控制台窗口?
- html - html/css 在 ios 设备上没有响应