检查列名是否唯一的函数

时间:2019-05-03 12:11:06

标签: r dataframe

我正在开发一个程序,现在我正在寻找一种在上传文件时检查列名的方法。如果名称不是唯一的,则应该写一个错误。有什么办法吗?

例如,如果我有这些df:

library(dplyr)
test <- rename(test, Number = a)
test <- rename(test, Number = b)
> test
  Number Number     c
1     10      1 Peter
2     20      2   Ann
3     30      3  Mike

具有:

        public Boolean chkmail(String email) {
            SQLiteDatabase db = this.getReadableDatabase();
            Cursor cursor = db.rawQuery("Select * from user where email=?", new String[]{email});
            if(cursor.getCount()>0) return false;
            else return true;

如果这是一个文件,如何检查列名是否唯一。好的结果就是只有True或False!

谢谢!

3 个答案:

答案 0 :(得分:4)

我们可以使用:

any(duplicated(names(df))) #tested with df as iris
[1] FALSE

关于OP的数据:

any(duplicated(names(test)))
[1] TRUE

可以使用@sindri_baldur和@akrun的建议简化以下内容

anyDuplicated(names(test))

如果您想知道有多少重复:

length(which(duplicated(names(test))==TRUE))
[1] 1

这也可以简化为(如@sindri_baldur所建议:

sum(duplicated(names(test)))

答案 1 :(得分:1)

test.frame <- data.frame(a = c(1:5), b = c(6:10))
a <- c(5:1)
test.frame  <- cbind(test.frame, a)

## Build data.frame with duplicate column

test.unique <- function(df) {  ## function to test unique columns

  length1 <- length(colnames(df))
  length2 <- length(unique(colnames(df)))        
  if (length1 - length2 > 0 ) {

    print(paste("There are", length1 - length2, " duplicates", sep=" "))
  }     
}

这导致...

test.unique(test.frame)

[1]“有1个重复项”

答案 2 :(得分:0)

检查功能unique()colnames()。例如:

are.unique.colnames <- function(array){
  return(length(unique(colnames(array))) == dim(array)[2])
}

是基于不同列名的数量(任何类似数组的结构的简单有用的元数据)的功能