为了账号安全,请及时绑定邮箱和手机立即绑定

R将变量列索引传递给ggplot2

/ 猿问

R将变量列索引传递给ggplot2

慕斯王 2019-11-14 10:45:40

我试图将列索引传递给ggplot,这是我将反复使用的函数的一部分。喜欢:


myplot <- function(df){

    ggplot(df, aes(df[, 1], df[, 2])) + geom_point()

}

我将始终将第一列用作我的x变量,将第二列用作我的y变量,但是列名在数据集之间变化。我到处搜索了。有什么想法吗?


编辑:

这是我使用的答案:


require(ggplot2)


myplot <- function(df){

   ggplot(df, aes_string(colnames(df)[1], colnames(df)[2])) + geom_point()

}


查看完整描述

3 回答

?
慕仰1329654

您可以使用aes_string代替aes代替使用对象来传递字符串,即:


myplot = function(df, x_string, y_string) {

   ggplot(df, aes_string(x = x_string, y = y_string)) + geom_point()

 }

myplot(df, "A", "B")

myplot(df, "B", "A")


查看完整回答
反对 回复 2019-11-14
?
慕慕森

aes_string(colnames(df)[1], colnames(df)[2])

查看完整回答
反对 回复 2019-11-14
?
白衣染霜花

我已经链接了一种方法(根本不用列名)。如果您坚持使用列名,请尝试以下操作:set.seed(45); df <- data.frame(x=gl(5,5), y=runif(25)); myplot2 = function(df, col1, col2) { ggplot(df, aes(x = get(names(df)[col1]), y = get(names(df)[col2])), environment = environment()) + geom_point() }。由此可以很容易地更改此函数以将列名作为参数。

查看完整回答
反对 回复 2019-11-14
  • 3 回答
  • 0 关注
  • 44 浏览
我要回答

相关问题推荐

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信