Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R将变量列索引传递给ggplot2_R_Ggplot2_Dataframe - Fatal编程技术网

R将变量列索引传递给ggplot2

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

我正在尝试将列索引作为我将重复使用的函数的一部分传递给ggplot。 比如:

我将始终使用第一列作为x变量,第二列作为y变量,但列名在数据集之间会发生变化。我到处都找过了。。有什么想法吗

编辑: 这是我使用的答案:

您可以使用aes_字符串代替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")

谢谢,它可以工作,但不理想,因为我必须手动指定列名。有什么办法解决这个问题吗?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")