R 为什么我的行名会被删除?如何避免?

R 为什么我的行名会被删除?如何避免?,r,dplyr,stringr,R,Dplyr,Stringr,我想用数据帧中的另一个字符串替换某个字符串 下面是一个示例代码: 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){stri

我想用数据帧中的另一个字符串替换某个字符串 下面是一个示例代码:

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))

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

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

dplyr
data.table
将行名重置为null谢谢@akrun,我不知道。我想知道这样做的理由是什么。也许是为了在df上进行计算时的效率?具有一些属性可能会降低performancedplyr不鼓励将变量存储在行名称中,因为它们很容易出错。如果您愿意,可以使用
tibble::rownames\u to\u column
将它们合并为适当的变量。它就像一个符咒。我知道我可以使用[3,]或[,3]访问行或列,但我从未想过单独使用[]。谢谢。你知道
[]
如何保存这些吗?@NelsonGon在
mutate\u all
中,我们不需要
[]
,因为它已经是一个data.frame/tbl\u df。使用
base r
lappy
返回向量和数据的
列表。frame是具有维度属性和其他内容的向量列表。因此,当我们使用
[]
时,它引导rhs上的输出具有与rhs相同的结构(dims)lhs@akrun这太棒了!你知道如何在管道中使用
[]
技巧吗?@DanChaltiel你的意思是在data.frames列表中吗?如果是这种情况,
lst1
table_ex[] <- mutate_all(table_ex, funs(remove_symb))