即使在传递数据帧之后,返回参数丢失错误



我正在编写一个函数来返回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,我还是会出错?

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

最新更新