统计数据框各列有多少非重复值的代码

2018-12-21  本文已影响24人  小洁忘了怎么分身

搜索无果,勉强自己用for循环做了一个轮子,算是r数据科学没有白学

colname <- vector("character")

count <- vector("integer")

for(i in 1:ncol(my_gene)){
  colname[i] = colnames(my_gene)[[i]]
  count[i]=nrow(my_gene[!duplicated(my_gene[,i]),])
}
test <- tibble(colname,count)

【更新于12.23 】写成输出表格的函数

dumd <- function(x){
colname <- vector("character")
count <- vector("integer")
for(i in 1:ncol(x)){
  colname[i] = colnames(x)[[i]]
  count[i]=nrow(x[!duplicated(x[,i]),])
}
df <- tibble(colname,count) %>%
  arrange(desc(count))
print(df)
}

【更新于2018.12.22】写成输出向量的函数

dump <- function(x){
  count <- vector("integer")
  for(i in 1:ncol(x)){
    count[i]=nrow(x[!duplicated(x[,i]),])
  }
  print(c(nrow(x),count))
}

试图写一个组合多个表格的函数,结果失败了,先放下以后再改

dumb <- function(...){
  colname <- vector("character")
  count <- vector("integer")
  for(i in 1:ncol(...)){
    colname[i] = colnames(...)[[i]]
    count[i]=nrow(...[!duplicated(...[,i]),])
  }
  paste('df',i) <- tibble(colname,count) %>%
    arrange(desc(count))
  list(paste('df',1:i))
}
test <- dumb(hgnc,hgnc_group,hgnc_family)

2018.12.24 成功实现批处理

dum.l <- function(x){
  output <- list()
  for (i in 1:length(x)){
  output[[i]] <- dumd(noquote((x)[[i]]))
  }
  output
}
multidum <- function(...){
  input <- list(...)
  output <- list()
  for (i in 1:length(input)){
    output[[i]] <- dumd(noquote((input)[[i]]))
  }
  output
}
multifun <- function(...,fun){
  input <- list(...)
  output <- list()
  for (i in 1:length(input)){
    output[[i]] <- fun(noquote((input)[[i]]))
  }
  output
}
上一篇 下一篇

猜你喜欢

热点阅读