0
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。没用。

4

2 回答 2

1

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

for(i in seq_along(final_targets)) {
     final_targets[,i] <- as.numeric(final_targets[,i])
 }
于 2021-05-11T21:35:58.173 回答
1

该函数as.numeric()是矢量化的。不需要嵌套循环,只需循环 akrun 提到的列。


您也可以使用dplyr,

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

带底座 R

sapply(final_targets, as.numeric)

或与purrr

map_dbl(final_targets, as.numeric)
于 2021-05-11T23:02:32.747 回答