已关闭,此问题为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软件包的首选做法是什么?我不想重新发明轮子。我想使用人们已经习惯的东西。
附言:我也考虑过提供一个公式作为参数的解决方案,但在我的情况下,这似乎有点多余和人为,因为这三列的含义是固定的,公式提供了太多的自由。
1条答案
按热度按时间oaxa6hgo1#
可能是一个品味问题,但选项2 -提供data.frame作为一个对象,让用户通过字符串名称指定正确的变量-或者使用公式是基本R函数处理的方式,如
lm
,reshape
和merge
,{data.table}smelt
/dcast
,{tidyr}spivot_longer
和pivot_wider
。我不推荐选项1,因为这需要复制数据。此外,它更难在灵活的代码中使用。