问题描述
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)