首页 > 解决方案 > 即使在传递数据帧后返回参数丢失错误

问题描述

我正在编写一个函数来返回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

标签: r

解决方案


我不确定你想做什么。例如,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

推荐阅读