我需要运行一个大型数据框并提取一个带有数字类型变量名称的向量。
我的代码陷入了困境,也许有人可以指点我的解决方案。
这是我有多远:
numericVarNames <- function(df) {
numeric_vars<-c()
for (i in colnames(df)) {
if (is.numeric(df[i])) {
numeric_vars <- c(numeric_vars, colnames(df)[i])
message(numeric_vars[i])
}
}
return(numeric_vars)
}
运行它:
teste <-numericVarNames(semWellComb)
is.numeric断言不起作用。我的语法捕获每列的类型有问题。有什么问题?
答案 0 :(得分:3)
而不是循环函数,怎么样
df <- data.frame(a = c(1,2,3),
b = c("a","b","c"),
c = c(4,5,6))
## names(df)[sapply(df, class) == "numeric"]
## updated to be 'safer'
names(df)[sapply(df, is.numeric)]
[1] "a" "c"
## As variables can have multiple classes
This question值得一读
答案 1 :(得分:1)
没有测试数据很难确定,但看起来只有一个&#34;语法&#34;在您的代码中出现问题。
您写道:
numeric_vars <- c(numeric_vars, colnames(df)[i])
将列名称添加到连接列表中的方法是在括号中包含整个引用的子集:
numeric_vars <- c(numeric_vars, colnames(df[i]))
尝试使用那一个更改运行它,看看你得到了什么。