R 为什么赢了';我的矩阵不能从字符转换成数字吗?
我正在尝试将我的数据标准化,以便在神经网络中使用。My data train0具有所有整型或双精度类型列,但最后一列是因子。这就是我尝试过的R 为什么赢了';我的矩阵不能从字符转换成数字吗?,r,R,我正在尝试将我的数据标准化,以便在神经网络中使用。My data train0具有所有整型或双精度类型列,但最后一列是因子。这就是我尝试过的 n <- ncol(train0)-1 y_train <- train0$ffail x_train <- as.matrix(train0[,4:n]) range_norm <- function(x) { ( (x - min(x)) / (max(x) - min(x)) )} # Normalize train
n <- ncol(train0)-1
y_train <- train0$ffail
x_train <- as.matrix(train0[,4:n])
range_norm <- function(x) {
( (x - min(x)) / (max(x) - min(x)) )}
# Normalize training and test data
x_train_norm <- apply(x_train, 2, range_norm)
但是,在我将用作.numeric
之后,我打印要检查的每个列的类型,它们仍然是字符
如果您能帮助我将数据标准化,以及如何将数据转换为数字矩阵,我将不胜感激。谢谢这里有一种方法可以将
字符
矩阵转换为数字
矩阵:
m=矩阵(如字符(1:9),3,3)
M
## [,1] [,2] [,3]
## [1,] "1" "4" "7"
## [2,] "2" "5" "8"
## [3,] "3" "6" "9"
应用(m,2,作为数字)
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
我们可以将矩阵的存储模式设置为“数值”
m矩阵不能有一列数字和另一列字符。你必须做:x\u train如果你做typeof(as.matrix(x\u train))
它是字符?如果你的一列仍然是字符,当你强制它成为一个矩阵时,所有列都将默认为字符。dostr(train0[,4:n])
要查看哪个字符或系数感谢您的帮助,我不确定问题出在哪里,但我重新启动了R,现在一切都运行顺利。或者matrix(as.numeric(m),nrow(m))
for(i in 1:ncol(x_train)){
x_train1[,i] <- as.numeric(x_train[,i])
print(typeof(x_train1[,i]))
}
m <- matrix(as.character(1:9), 3, 3)
m
# [,1] [,2] [,3]
# [1,] "1" "4" "7"
# [2,] "2" "5" "8"
# [3,] "3" "6" "9"
mode(m)
# [1] "character"
mode(m) <- "numeric" ## set storage mode
m
# [,1] [,2] [,3]
# [1,] 1 4 7
# [2,] 2 5 8
# [3,] 3 6 9