as.numeric 函数在嵌套 for 循环中不起作用

问题描述

for (i in c(1:ncol(final_targets))) {
  for (j in c(2:nrow(final_targets))) {
  final_targets[j,i] <- as.numeric(final_targets[j,i])
  }
}

data.class(final_targets[2,1]) [1]“字符”

无论我使用什么,输出总是显示为字符。我试过 as.integer 和 as.double。没用。

解决方法

我们只需要一个循环而不是嵌套循环。 type 特定于一列,可以直接分配。但是,如果我们也循环遍历行然后尝试分配行的每个元素,它将不起作用,因为其他值是 character 并且列类型保持为 character

for(i in seq_along(final_targets)) {
     final_targets[,i] <- as.numeric(final_targets[,i])
 }
,

函数 as.numeric() 被向量化。不需要嵌套循环,只需循环 akrun 提到的列即可。


您也可以使用 dplyr 轻松做到这一点,

final_targets%>%mutate(across(everything(),as.numeric))

带基数 R

sapply(final_targets,as.numeric)

或者用purrr

map_dbl(final_targets,as.numeric)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...