在R中的if-else语句中使用大小不等的数据帧

时间:2018-08-01 13:59:43

标签: r

我有3个大小不等的数据帧(df1,df2,df3)。我想根据调用哪个数据框来提取某些列。
例如,如果选择df1,我想提取column1column2,如果选择df2,我想提取column3column4,如果选择df3,我想提取column5。 为此,我使用了简单的if-else语句。

df <- df1

if (df==df1){
  df[,c(column1,column2)]
}else if (df==df2){
  df[,c(column3,column4)]
}else{
  df[,column5]
}

运行代码时,出现以下错误:

  

Ops.data.frame(df,df1)中的错误:“ ==”仅针对   大小相等的数据帧

有没有办法解决R中大小不等的数据帧的问题? 如果没有,如何解决此问题?

非常感谢!!!

1 个答案:

答案 0 :(得分:0)

我在评论中建议了all.equal,但看起来并不是那么简单。

基本上,如果data.frames都相等,all.equal将返回TRUE,但是如果不相同,它将返回一个描述差异的字符向量,因此与{{ 1}}检查。你能做的就是这个!

if

获取if (all(all.equal(df, df1) == TRUE)) (将是单个all.equal或一个或多个字符串)的输出,并检查是否TRUE all.equal的每个元素都是{{ 1}},只有在data.frames相同时才会发生!

修改

看起来TRUE消除了对杂技的需求。您可以做

TRUE