确认R语言中转换data.frame整数列为数值列的代码有效性
你的代码无法实现需求,存在两个关键问题:
- 判断对象错误:
is.integer(badClassFrame)是检查整个数据框是否为整数类型,而非单独检查每一列。要实现列级别的类型判断,应该写成is.integer(badClassFrame[[i]])或is.integer(badClassFrame[,i])。 - 未保存转换结果:
as.numeric()仅执行了转换操作,但没有将转换后的值赋值回原数据框的对应列,所以转换不会生效,必须写成badClassFrame[[i]] <- as.numeric(badClassFrame[[i]])。
修正后的for循环代码:
for(i in 1:ncol(badClassFrame)) { if (is.integer(badClassFrame[[i]])) { badClassFrame[[i]] <- as.numeric(badClassFrame[[i]]) } }
更简洁的替代写法(无需循环):
用lapply可以批量处理所有列,代码更简洁高效:
badClassFrame[] <- lapply(badClassFrame, function(col) { if (is.integer(col)) as.numeric(col) else col })
内容的提问来源于stack exchange,提问作者anarami.ta
相关产品推荐
相关产品推荐

