使用通配符在整个数据框中替换为 NA

问题描述 投票:0回答:1

我有一个像这样的数据框 df
Col1 Col2 Col3
1 2 5
6 X1 9
8 X3 7
5 3 X4

我想用 NA 替换所有以“X”开头的值。结果应该是
Col1 Col2 Col3
1 2 5
6 NA 9
8 NA 7
5 3 NA

我尝试了不同的解决方案但没有成功:


df[-grep(pattern = "X^",df),]    
df %>% mutate_all(~na_if(.,"X*"))    
df%>% mutate_all(~na_if(.,matches("X*")))    
df %>% mutate_all(~na_if(.,glob2rx("X*")))
r dataframe replace wildcard na
1个回答
0
投票

lapply()
应该可以解决问题:

df[] <- lapply(df[], \(x){x[grep("X", x)] <- NA; as.numeric(x)})

# Col1 Col2 Col3
#1    1    2    5
#2    6   NA    9
#3    8   NA    7
#4    5    3    4

数据

df <- read.table(text = "Col1 Col2 Col3
1 2 5
6 X1 9
8 X3 7
5 3 4", header = TRUE)
© www.soinside.com 2019 - 2024. All rights reserved.