R将变量列索引传递给ggplot2
我正在尝试将列索引作为我将重复使用的函数的一部分传递给ggplot。 比如: 我将始终使用第一列作为x变量,第二列作为y变量,但列名在数据集之间会发生变化。我到处都找过了。。有什么想法吗 编辑: 这是我使用的答案: 您可以使用aes_字符串代替aes来传递字符串,而不是使用对象,即:R将变量列索引传递给ggplot2,r,ggplot2,dataframe,R,Ggplot2,Dataframe,我正在尝试将列索引作为我将重复使用的函数的一部分传递给ggplot。 比如: 我将始终使用第一列作为x变量,第二列作为y变量,但列名在数据集之间会发生变化。我到处都找过了。。有什么想法吗 编辑: 这是我使用的答案: 您可以使用aes_字符串代替aes来传递字符串,而不是使用对象,即: myplot = function(df, x_string, y_string) { ggplot(df, aes_string(x = x_string, y = y_string)) + geom_po
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")
谢谢,它可以工作,但不理想,因为我必须手动指定列名。有什么办法解决这个问题吗?aes_stringcolnamesdf[1],colnamesdf[2]通常,在ggplot2中,aes中不提供向量。在aes中,您提供了绘图美学到数据列的映射,而无需在aes中对数据进行硬编码。例如,如果您的列名为a-b,则会在evalexpr、envir、enclose中出现错误:未找到对象“a-b”。将environment=environment与aes一起使用是另一个修复方法,正如上面OP文章中链接的那样。@PaulHiemstra,我已经链接了一种不使用列名的方法。如果坚持使用列名,请尝试以下方法:set.seed45;df您的问题标题似乎与Paul Hiemstra的答案相对应,即使用字符串列名。但是你的问题的主体是关于使用他们的索引,这确实是一个重复的标记。我建议你将问题的主体部分改为与答案相匹配。@MaxGhenis这两种情况以及更多情况都在Paul的答案和下面的评论中得到了回答。我明白了。内容的不匹配对于那些偶然发现这一点的人来说仍然令人困惑;问题应该具体明确。更改它也可能会提供一个机会,使其作为副本进行解冻。@MaxGhenis您建议如何修改标题?编辑:忽略以下内容,我最初并没有误读。问题应为将变量列索引传递给ggplot2,并正确标记为重复项。奥利格;忽略:糟糕,对不起,我刚刚意识到我误解了这个问题,认为通过指数是有问题的。这只是一个虚假的重复标记,可能需要比我有更多业力的人来请求复查。很抱歉,N8TRO!
require(ggplot2)
myplot <- function(df){
ggplot(df, aes_string(colnames(df)[1], colnames(df)[2])) + geom_point()
}
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")