Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.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 函数中不同数据集的不同操作_R - Fatal编程技术网

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
。如果您需要以编程方式确定调用哪一个函数,请考虑有什么意义的区别——或者至少是一个易于测试的小区别(存在分组列、行数或列数等)而不是看每个值是否相同。