R 函数中不同数据集的不同操作
我需要提出一个基于不同数据集的函数,这些数据集被输入到函数中,操作是不同的。以R 函数中不同数据集的不同操作,r,R,我需要提出一个基于不同数据集的函数,这些数据集被输入到函数中,操作是不同的。以mtcars和iris为例: func<-function(df) { if (df ==mtcars){ df%>%summarise(cnt=n())} else{ df } } func(mtcars) func(iris) func%摘要(cnt=n())} 否则{ df } } func(mtcars) func(iris) 如果是mtcars,请告诉我它的数量,如果是
mtcars
和iris
为例:
func<-function(df) {
if (df ==mtcars){
df%>%summarise(cnt=n())}
else{
df
}
}
func(mtcars)
func(iris)
func%摘要(cnt=n())}
否则{
df
}
}
func(mtcars)
func(iris)
如果是mtcars
,请告诉我它的数量,如果是iris
,请告诉我它是怎样的。但是,此代码的工作方式与我希望的不同。当我执行func(mtcars)
时,我会收到如下警告消息
警告信息:
如果(df==mtcars){:
该条件的长度大于1,并且仅使用第一个元素
。
如果我做了func(iris)
,它会向我抛出错误
操作数据帧中的错误(df,mtcars):
“==”仅为大小相同的数据帧定义。
那么我该如何修复它呢?你想对这些对象做什么不同的事情。行为真的是由你传入的变量的名称决定的吗?如果你做了
my_cars,用一个更病态的例子来补充MrFlick的优点,如果我做mtcars@MrFlick@Gregor--restore Monica--目前我有两个数据设置。当我输入df1
时,我想要做的是像df1%>%groupby(groups)%%>%summary(cnt=n(),rate=col1/col2)这样的事情
。当我输入“df2
”时,我只需要上面提到的任何东西,但是rate=col1/col2
bc由于df2
的性质,我不能也不需要计算任何速率。我认为在我的原始帖子中使用函数作为示例可以简化问题。它看起来非常具体……我认为更正常的方法是uld应该有两个函数,只调用df1
上的func1
和df2
上的func2
。如果您需要以编程方式确定调用哪一个函数,请考虑有什么意义的区别——或者至少是一个易于测试的小区别(存在分组列、行数或列数等)而不是看每个值是否相同。