如何解决循环列以标准化那些数字
使用 R,我尝试遍历数据集中的所有列,并使用 for 循环、if 语句和 scale 函数对那些数字列进行标准化。
目前我这样做的代码如下:
for (columns in names(data)){
if class(data[[columns]]) == "numeric"{
data$columns = scale(data$columns)
}
print(columns)
}
然而,这行不通。有什么帮助吗?
解决方法
tidyverse
方法:
library(tidyverse)
#Data
data("iris")
#Code
new <- iris %>% mutate(across(where(is.numeric),~scale(.)))
,
您可以找到数字列并对其应用 scale
。例如,使用内置的 iris
数据集。
cols <- sapply(iris,is.numeric)
iris[cols] <- scale(iris[cols])
iris
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 -0.8977 1.0156 -1.3358 -1.311052 setosa
#2 -1.1392 -0.1315 -1.3358 -1.311052 setosa
#3 -1.3807 0.3273 -1.3924 -1.311052 setosa
#4 -1.5015 0.0979 -1.2791 -1.311052 setosa
#5 -1.0184 1.2450 -1.3358 -1.311052 setosa
#6 -0.5354 1.9333 -1.1658 -1.048667 setosa
#...
#...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。