R 为什么赢了';我的矩阵不能从字符转换成数字吗?

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

我正在尝试将我的数据标准化,以便在神经网络中使用。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 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))
它是字符?如果你的一列仍然是字符,当你强制它成为一个矩阵时,所有列都将默认为字符。do
str(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