我想用 for-loop 创建一个函数,这样我的数据框的每个变量都会针对变量 main_variable绘制(散点图)(使用 ggplot2 )
数据框:
main_variable a b c d
1 7 42.857143 210 510 120
2 3 115.714286 180 810 450
3 5 21.428571 120 270 NA
4 5 17.142857 540 660 NA
5 2 20.000000 NA 100 40
6 2 21.428571 60 60 150
7 0 5.714286 NA NA 190
8 2 8.571429 120 180 NA
9 4 17.857143 810 935 60
10 3 21.428571 900 1050 NA
到目前为止我提出的功能是:
scatter <- function(df) {
for(i in 2:ncol(df)){
col <- names(df)[i]
na.omit(col)
as.character(quote(col))
scp <- ggplot(df, aes(x = main_variable, y = col)) +
geom_jitter(size = 0.25, height = 0.25) +
scale_x_continuous(limits = c(0, 7)) +
scale_y_discrete(limits = c(0, max(df[, col]))) +
geom_smooth(method = "lm", colour = "Red")
plot(scp)
}
}
scatter(dataframe)
但随后出现错误消息:
Error: Discrete value supplied to continuous scale
main_variable的值只能取8个值中的一个:0,1,2,3,4,5,6或7。 所有其他变量的值可以在0到5000之间。
然而,正在运行
dataframe[1:ncol(dataframe)] <- as.numeric(unlist(dataframe[1:ncol(dataframe)]))
无法解决问题。 (我使用1:ncol(数据帧)因为我不想转换并使用我的真实数据帧的所有变量。)
有谁知道如何解决这个问题?
谢谢。