我是 R 的菜鸟。
我正在处理大约 150 行和 21 列的数据框。我想将第 5 列到第 20 列的字符“-”更改为“0.00”。
我正在使用这段代码,它可以单独运行:
datos$max52sem<-str_replace(datos$max52sem,"-","0.00")
datos$min52sem<-str_replace(datos$min52sem,"-","0.00")
我正在尝试使用“for”从所有列中更改它,而不是将所有变量的名称都写 15 次。
这是我正在写的:
mis_vars<-c("max52sem","min52sem","cierre_prev","cierre_hoy","max_hoy","min_hoy","ret_hoy","ret_sem","ret_mes","ret_año","ret_ytd","vol","upa","vla","pvla","pu")
for(x in mis_vars)
datos$x<-str_replace(datos$x,"-","0")
“mis_vars”是我想在我的数据框中更改的列(变量)的名称,但我从 R 得到了这个答案,我不知道我做错了什么。
Error in
$<-.data.frame
(*tmp*
, "x", value = character(0)) : replacement has 0 rows, data has 1220>
最佳答案
与 dplyr
, 我们可以使用 mutate_at
library(dplyr)
library(stringr)
datos <- datos %>%
mutate_at(vars(mis_vars), ~ str_replace(., "-", "0"))
在 OP 的 for 循环中,而不是 datos$x <-
,应该是datos[[x]] <-
因为它将创建一个名为“x”的列而不是“mis_vars”中的变量
或者只使用 base R
datos[mis_vars] <- lapply(datos[mis_vars], sub, pattern = "-", replacement = "0")
关于r - 许多列中的 str_replace 问题以及,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58895859/