【发布时间】:2018-08-24 21:56:55
【问题描述】:
我必须创建一个函数 ncol_type(df, ty),它返回 df 中类型为 ty 的列数。
这是我目前所拥有的:
ncol_type = function(df, ty) {
for (col_name in names(df)) {
col_vector_class <- class(df[,col_name])
c == 0
if (col_vector_class == ty) {
c = c + 1
}
return(c)
}
}
例如,如果我输入 n_col_type(df, "integer"),其中矩阵 df 有两列整数数据类型,我希望函数返回“2”。
我不确定我做错了什么。谢谢。
【问题讨论】:
-
A
matrix只能容纳一种类型。您最可能的意思是dataframe。只是为了让您掌握正确的术语。 -
@AndreElrico 谢谢安德烈。我会更改标签
-
我会使用
sum(sapply(df,is.interger))之类的东西,当然你需要在sapply中动态设置“is.class”部分。 -
也许不是您的问题,但您可以使用
table(sapply(iris, function(a) class(a)[1]))一次获取所有类型。 ([1]是处理一些返回 2+ 的东西的 hack,例如class(Sys.time())。) -
@r2evans 听起来不错。下面的答案回答了它。谢谢!
标签: r function for-loop dataframe column-types