检索数值变量的变量名
问题描述:
我需要运行一个大型数据框,并提取一个具有数值类型变量名称的向量。检索数值变量的变量名
我已经卡在我的代码中,也许有人可以指向我的解决方案。
这是我多远了:
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说法是行不通的。我的语法用于捕获每列的类型是有问题的。哪里不对?
答
,而不是一个循环功能,怎么样
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是值得一读
答
没有测试数据很难确定,但它看起来像有只是一个“语法”的问题在你的代码中。
您写道:
numeric_vars <- c(numeric_vars, colnames(df)[i])
获得列名到拼接列表的方式是包括整个提到在括号子集:
numeric_vars <- c(numeric_vars, colnames(df[i]))
尝试与一个运行它改变并看看你得到了什么。
你把10行变成了一行!这非常有用。谢谢! –
@路易斯 - 没问题。只是要小心你是否想'数字'/'整数',并了解'class','typeof'等之间的差异等。 – SymbolixAU
好的答案。你可以这样做:'name(df)[sapply(df,is.numeric)]' – Gopala