R统计数据编程:使用magrittr管道将2个参数传递到功能

R统计数据编程:使用magrittr管道将2个参数传递到功能,r,magrittr,R,Magrittr,我正在使用magrittr,并且能够通过magrittr的管道将一个变量传递给R函数,还可以选择在多变量函数的情况下放置哪个参数:F(x,y,z,…) 但是我想同时传递两个参数 例如,我将使用dplyr中的Select函数并传入tableName和ColumnName: 我想我可以这样做: tableName%>%ColumnName%>%select(,。) 但这并不奏效。 希望有人能在这方面帮助我 编辑: 下面有人说这是别人提供的链接的副本。 但基于多变量函数的magrittr管道定义的代数

我正在使用magrittr,并且能够通过magrittr的管道将一个变量传递给R函数,还可以选择在多变量函数的情况下放置哪个参数:F(x,y,z,…)

但是我想同时传递两个参数

例如,我将使用dplyr中的Select函数并传入tableName和ColumnName:

我想我可以这样做:

tableName%>%ColumnName%>%select(,。)

但这并不奏效。 希望有人能在这方面帮助我

编辑:

下面有人说这是别人提供的链接的副本。 但基于多变量函数的magrittr管道定义的代数结构,仅基于管道函数的代数定义,它应该是“可行的”

其他人提供的链接超出了基本定义,并使用其他外部函数和/或库来尝试实现向函数传递多个参数

我正在寻找一个解决方案,如果可能的话,只使用magrittr库和其他基本操作

这就是对这个问题的限制

在我大学的大部分数学和计算机科学课程中,我们只限于使用课程中教授的东西。因此,当我说我正在使用dplyr和magrittr时,这应该意味着这些是唯一允许使用的东西,因此它在这个约束下

希望这澄清了可能的解决方案的范围


如果仅仅通过这些库无法做到这一点,我希望有人告诉我这是无法做到的。

我认为您需要更详细地了解您到底想要什么,但我理解这个问题,我认为一个解决方案可能是:

list(x=tableName,y=“ColumnName”)%%>%{select(eval(.$x),.$y)}

这只是对聊天中链接的代码的修改。其他实现的问题是
select()
的第一个和第二个输入必须是特定的(不同的)类型。所以仅仅插入两个字符串或两个对象是行不通的

本着同样的精神,您也可以使用:

list(x=“tableName”,y=“ColumnName”)%%>%{select(get(.$x),.$y)}

列表(tableName,“ColumnName”)%%>%do.call(“select”,)


但是,请注意,所有这些函数(即
get()
eval()
、和
do.call()
)都有环境规范,如果指定不正确,可能会导致错误。在这些示例中,它们工作得很好,因为所有事情都是在全局环境中发生的,但如果在函数中调用它们,情况可能会发生变化

我认为您需要更详细地了解您到底想要什么,但根据我对问题的理解,我认为一种解决方案可能是:

list(x=tableName,y=“ColumnName”)%%>%{select(eval(.$x),.$y)}

这只是对聊天中链接的代码的修改。其他实现的问题是
select()
的第一个和第二个输入必须是特定的(不同的)类型。所以仅仅插入两个字符串或两个对象是行不通的

本着同样的精神,您也可以使用:

list(x=“tableName”,y=“ColumnName”)%%>%{select(get(.$x),.$y)}

列表(tableName,“ColumnName”)%%>%do.call(“select”,)


但是,请注意,所有这些函数(即
get()
eval()
、和
do.call()
)都有环境规范,如果指定不正确,可能会导致错误。在这些示例中,它们工作得很好,因为所有事情都是在全局环境中发生的,但如果在函数中调用它们,情况可能会发生变化

评论不用于扩展讨论;这段对话已经结束。嗨,塞缪尔,我是根据你的链接进入聊天室的,我可以看到所有的东西,但是我不能在里面发帖。页面底部显示我必须登录,但我已登录。我在一个浏览器中尝试了它,我收到一条错误消息,说目前Stackoverflow存在问题。在当前的浏览器firefox中,我收到了相同的消息,告诉我登录时必须登录,但没有收到任何错误消息,但我在聊天室中不断循环,我单击“登录”,然后进入stackoverflow上的常规页面,在那里我仍然登录。这是用户合并的结果。请使用网站底部的联系我们链接与开发者联系。评论不用于进一步讨论;这段对话已经结束。嗨,塞缪尔,我是根据你的链接进入聊天室的,我可以看到所有的东西,但是我不能在里面发帖。页面底部显示我必须登录,但我已登录。我在一个浏览器中尝试了它,我收到一条错误消息,说目前Stackoverflow存在问题。在当前的浏览器firefox中,我收到了相同的消息,告诉我登录时必须登录,但没有收到任何错误消息,但我在聊天室中不断循环,我单击“登录”,然后进入stackoverflow上的常规页面,在那里我仍然登录。这是用户合并的结果。请使用网站底部的联系我们链接联系开发者。嗨,Arwood,这正是我要找的。因此,使用dplyr的select()函数时,在参数的传入方式和数据类型方面必须更加小心。我对我使用的表名和列尝试了您的代码,您的代码工作正常!我会回答你的问题。但另一个用户建议使用另一个名为“do.call()”的函数,只是想知道您是否知道是否也可以使用“do.call()”函数来实现这一点。是的,您可以使用