即使传递数据帧后也返回参数丢失错误

时间:2018-07-19 06:50:13

标签: r

我正在编写一个函数来返回data.frame中的变量名称和类。

vec_name<-c()
vec_class<-c()
Df_class <- function(x){
    for (i in 1:length(colnames(x))){
        vec_name[i] <- colnames(x)[i]
        vec_class[i] <- class(colnames(x)[i])
    }
    df <-as.data.frame(name=vec_name,class=vec_class)
    return(df)
}

现在当我调用函数

Df_class(mtcars)

我看到下面提到的错误

  

错误:缺少“ x”参数且没有默认值

你们能帮忙吗?可能是我在这里缺少某些东西,不确定是什么!为什么尽管传递了data.frame却出现错误?

1 个答案:

答案 0 :(得分:1)

我不确定您要做什么。例如,现有列名的class将始终为"character"

无论哪种方式,这是你的追求吗?

Df_class <- function(x) data.frame(name = colnames(x), class = class(colnames(x)))
#   name     class
#1   mpg character
#2   cyl character
#3  disp character
#4    hp character
#5  drat character
#6    wt character
#7  qsec character
#8    vs character
#9    am character
#10 gear character
#11 carb character

也许您想返回列向量的class 而不是列名?在这种情况下,您可以

Df_class <- function(x) data.frame(name = colnames(x), class = sapply(x, class))
Df_class(iris)
#                     name   class
#Sepal.Length Sepal.Length numeric
#Sepal.Width   Sepal.Width numeric
#Petal.Length Petal.Length numeric
#Petal.Width   Petal.Width numeric
#Species           Species  factor