r - 使用 check.names =FALSE 导入数据集会导致在 ggplot2 循环中绘图出现问题
问题描述
因为我的标题包含括号,所以我使用check.names = FALSE
.
Homo <- read.table("20200602- Homogenate MI-Athero Millepore R file.txt", header=TRUE,
sep="\t", as.is=TRUE, na.strings="#NULL!", comment.char = "", check.names = FALSE)
在这里我拆分文件
Atherohomo <- Homo[Homo$"Model Code" == "MI", ]
循环来了
for (i in names(Homo)[8:32]){
ggplot(Atherohomo, aes_string(`Sample`, i)) +
geom_boxplot(show.legend = F, fill= c("#3e5fa8","#fc9e23","#2D416D","#d47800"), width = 0.4) +
geom_beeswarm(aes(color = `Sample`), size=2)
}
数据来自dput(head(Atherohomo))
:
Atherohomo <- structure(list(`Plate number` = 43:48, `Mouse ID` = c("16-mi10262-01m",
"16-mi10262-02m", "16-mi10263-03m", "16-mi10263-04m", "16-mi10323-04m",
"16-mi10456-01m"), Model = c("MI 4 hours", "MI 4 hours", "MI 4 hours",
"MI 4 hours", "MI 4 hours", "MI 4 hours"), `Model Code` = c("MI",
"MI", "MI", "MI", "MI", "MI"), Tissue = c("Homogenate", "Homogenate",
"Homogenate", "Homogenate", "Homogenate", "Homogenate"), Sample = c("4h riva",
"4h riva", "4h riva", "4h riva", "4h riva", "4h Ctrl"), `Dilution factor` = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), `x25 (pg/ml)` = c(57.83,
76.29, 27.75, 18.19, 39.55, 36.69), `x1 (pg/ml)` = c(73.53,
73.53, 69.86, 67.98, 73.53, 71.7), `x2 (pg/ml)` = c(16.57,
16.21, 15.14, 17.46, 16.57, 14.78), `x3 (pg/ml)` = c(80.99,
95.15, 82.43, 84.58, 66.21, 69.22), `x4 (pg/ml)` = c(20, 21.56,
20, 20, 20, 23.11), `x5 (pg/ml)` = c(3.39, 4.35, 2.24, 2.24,
3.2, 2.72), `IL-4 (pg/ml)` = c(0, 0, 0, 0, 0, 0), `x6 (pg/ml)` = c(5.78,
5.78, 5.44, 5.1, 5.78, 5.1), `x7 (pg/ml)` = c(33.78, 37.65,
5.31, 5.49, 12.8, 30.34), `x8 (pg/ml)` = c(36.34, 39.35, 36.34,
34.33, 36.34, 36.34), `x9 (pg/ml)` = c(253.48, 228.34, 234.74,
181.11, 247.3, 228.34), `x10 (pg/ml)` = c(43.93, 37.7, 50.19,
53.33, 38.74, 37.18), `x11 (pg/ml)` = c("33.61", "32.01",
"34.89", "31.69", "x12 (pg/ml)+T4", "30.42"), `x13 (pg/ml)` = c(56.33,
58.46, 54.19, 56.33, 52.04, 54.19), `x13 (pg/ml)` = c(34.41,
36.52, 43.86, 44.9, 40.72, 41.77), `x15 (pg/ml)` = c(286.34,
272.07, 257.73, 254.13, 272.07, 286.34), `x16 (pg/ml)` = c(3.89,
3.67, 3.67, 3.45, 3.45, 3.56), `x17 (pg/ml)` = c(18.44, 12.48,
3.72, 2.51, 10.14, 17.88), `x18 (pg/ml)` = c(470.3, 418.68, 25.47,
17.69, 142.12, 288.25), `x19 (pg/ml)` = c(219.64, 117.09, 65.48,
59.69, 98.91, 160.71), `x20 (pg/ml)` = c(188.93, 193.6, 181.74,
179.28, 184.16, 174.29), `x21 (pg/ml)` = c(103.52, 106.61,
99.71, 98.41, 106, 98.41), `x22 (pg/ml)` = c(204.41, 181.82,
175.72, 175.72, 181.82, 175.72), `x23 (pg/ml)` = c(13.98,
14.28, 12.94, 12.79, 13.24, 12.79), `x24 (pg/ml)` = c(15.27,
13.86, 13.14, 12.41, 13.86, 13.14)), row.names = c(NA, 6L), class = "data.frame")
解决方案
你有一系列问题。您有两次 x13 列。x11 列同时包含数字和文本。对于括号的问题,您确实需要粘贴反引号才能aes_string
开始工作。这对我有用:
Atherohomo2 <- Atherohomo
Atherohomo2$`x13 (pg/ml)` <- NULL
Atherohomo2$`x11 (pg/ml)` <- NULL
for (i in names(Atherohomo2)[8:30]){
p <- ggplot(Atherohomo2, aes_string('Sample', paste0('`', i, '`'))) +
geom_boxplot(aes(fill = Sample), show.legend = F, width = 0.4) +
# I don't have that package installed:
# geom_beeswarm(aes(color = `Sample`), size=2) +
scale_fill_manual(values = c("#3e5fa8","#fc9e23","#2D416D","#d47800"))
print(p)
}
推荐阅读
- c# - 在运行时更改 const 字段的值
- javascript - 如何在 Next.js 中将路径名从 _document 传递到 _app
- php - PHP xmllib XSD 验证命名空间错误:不期望 X,期望 X
- r - 如果在一个函数中我将获得正面的概率设置为 0.7,那么为什么在 100 次投掷后我得到 65 的结果?
- pandas - Replacing values that are larger than a specific parameter
- matlab - 如何使用不同的序列号重复打印一个变量
- swift - 将 SwiftUI 与动画延迟链接 - 仅显示最后一个动画,除非对象是显示所有动画的中间动画
- c# - 有没有办法从方法中调用对象?
- regex - notepad++的正则表达式和替换
- vba - 将excel导入vba访问的现有表时出错