Ive*_*eda 3 replace for-loop r str-replace dataframe
我是 R 菜鸟。
\n\n我正在处理大约 150 行和 21 列的数据框。我想将第 5 列到第 20 列的字符“-”更改为“0.00”。
\n\n我正在使用这段代码,它可以单独工作:
\n\ndatos$max52sem<-str_replace(datos$max52sem,"-","0.00")\ndatos$min52sem<-str_replace(datos$min52sem,"-","0.00")\nRun Code Online (Sandbox Code Playgroud)\n\n我尝试使用“for”从所有列中更改它,而不是将所有变量名称写入 15 次。
\n\n这就是我正在写的:
\n\nmis_vars<-c("max52sem","min52sem","cierre_prev","cierre_hoy","max_hoy","min_hoy","ret_hoy","ret_sem","ret_mes","ret_a\xc3\xb1o","ret_ytd","vol","upa","vla","pvla","pu")\nfor(x in mis_vars)\n datos$x<-str_replace(datos$x,"-","0")\nRun Code Online (Sandbox Code Playgroud)\n\n“mis_vars”是我想在数据框中更改的列(变量)的名称,但我从 R 得到这个答案,我不知道我做错了什么。
\n\n\n\n\n
$<-.data.frame(*tmp*, "x", value = character(0))中的错误:\n 替换有 0 行,数据有 1220>
有了dplyr,我们可以使用mutate_at
library(dplyr)
library(stringr)
datos <- datos %>%
mutate_at(vars(mis_vars), ~ str_replace(., "-", "0"))
Run Code Online (Sandbox Code Playgroud)
在OP的for循环中,而不是datos$x <-,它应该是datos[[x]] <-因为它将创建一个名为“x”的列而不是“mis_vars”中的变量
或者仅使用base R
datos[mis_vars] <- lapply(datos[mis_vars], sub, pattern = "-", replacement = "0")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2761 次 |
| 最近记录: |