R语言 如何设计一个函数的接口,该函数接受具有某些列的数据,框架?[关闭]

q5lcpyga  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(118)

已关闭,此问题为opinion-based,目前不接受回答。
**想改进这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。

25天前关闭
Improve this question
我正在编写一个R包,我的函数应该采用data.frame,它有3列- exID,site,occasion。然而,我知道每个人都会有不同列名的数据。我正在考虑几种选择:
1.用户必须用我的确切列名构造一个data.frame,例如:
f(data.frame(exID = mydata$ID, site = mydata$siteID, occasion = mydata$year))
1.用户会传递他的整个data.frame,告诉我他的列的名称。例如。像这样-感觉有点笨拙:
f(mydata, exID.name = "ID", site.name = "siteID", occasion.name = "year")
1.用户将传递三个向量:
f(exID = mydata$ID, site = mydata$siteID, occasion = mydata$year)
但是这种变体有缺点:用户可能不清楚这些应该是同一个data.frame的三列,并且这些值以这种方式绑定在一起。我必须检查向量是否具有相同的长度。
目前,我认为第一种选择的缺陷最少。还有其他选择吗?成熟的R软件包的首选做法是什么?我不想重新发明轮子。我想使用人们已经习惯的东西。
附言:我也考虑过提供一个公式作为参数的解决方案,但在我的情况下,这似乎有点多余和人为,因为这三列的含义是固定的,公式提供了太多的自由。

oaxa6hgo

oaxa6hgo1#

可能是一个品味问题,但选项2 -提供data.frame作为一个对象,让用户通过字符串名称指定正确的变量-或者使用公式是基本R函数处理的方式,如lmreshapemerge,{data.table}s melt/dcast,{tidyr}s pivot_longerpivot_wider
我不推荐选项1,因为这需要复制数据。此外,它更难在灵活的代码中使用。

相关问题