为什么我的行名被删除以及如何避免它?

Fra*_*nky 2 r stringr dplyr

我想在数据框中用另一个字符串替换某个字符串,这是一个示例代码:

table_ex <- data.frame(row.names = c("row 1", "row 2", "row 3"))
table_ex$year1 <- 3:1
table_ex$year2 <- c("NaN", 5, "NaN %")
table_ex$year3 <- c("NaN %", 7, "NaN %")

remove_symb <- function(yolo){stringr::str_replace(yolo, 'NaN %|NaN', '')}
table_ex <- mutate_all(table_ex, funs(remove_symb))
Run Code Online (Sandbox Code Playgroud)

执行上述操作是删除我的rownnames。我知道我可以使用 lapply 函数,但我想知道为什么行名被删除了。是因为str_replace功能还是mutate_all功能?我应该如何防止这种情况?

akr*_*run 5

如果我们需要保留行名,循环遍历列并将其分配回原始数据并保持结构完整,请使用[].

table_ex[] <- lapply(table_ex, remove_symb)
table_ex
#      year1 year2 year3
#row 1     3            
#row 2     2     5     7
#row 3     1            
Run Code Online (Sandbox Code Playgroud)

使用dplyrdata.table将行名称更改为数字序列,但使用[],我们仍然可以将其更改为原始行名称

table_ex[] <- mutate_all(table_ex, funs(remove_symb))
Run Code Online (Sandbox Code Playgroud)

  • 它就像一个魅力。我知道我可以使用 [3, ] 或 [ , 3] 访问行或列,但我从未想过单独使用 [ ] 。谢谢你。 (2认同)