【发布时间】:2018-03-26 14:36:01
【问题描述】:
我有一个包含多个列的数据框“abnormal2”,我以剪切一些列为例;
id class1 class2 class3 class4 class5
1 1 PATH PATH PATH PATH PATH
2 2 rLS PATH LB <NA>
3 3 PATH PATH PATH <NA> <NA>
4 4 PATH VUS VUS <NA> <NA>
5 5 PATH VUS VUS <NA> <NA>
6 6 PATH PATH VUS PATH <NA>
7 7 MPATH VUS VUS <NA> <NA>
8 8 VUS VUS VUS <NA> <NA>
9 9 PATH VUS VUS <NA> <NA>
10 10 PATH PATH <NA> <NA>
我想要将任何与字符串列表 (MPATH,VUS_LPATH,VUS_LB,PATH,VUS,LB,Normal) 不匹配的单元格替换为 NA。这仅适用于从 class1 到 class5 的 cols; 结果可能是这样的:
id class1 class2 class3 class4 class5
1 1 PATH PATH PATH PATH PATH
2 2 NA NA PATH LB <NA>
3 3 PATH PATH PATH <NA> <NA>
4 4 PATH VUS VUS <NA> <NA>
5 5 PATH VUS VUS <NA> <NA>
6 6 PATH PATH VUS PATH <NA>
7 7 MPATH VUS VUS <NA> <NA>
8 8 VUS VUS VUS <NA> <NA>
9 9 PATH VUS VUS <NA> <NA>
10 10 PATH PATH NA <NA> <NA>
我使用了下面的代码,但它不起作用:
sel <- grepl("class",names(abnormal2))
abnormal2[sel] <- data.frame(lapply(abnormal2[sel], function(x) gsub([^MPATH|^VUS\\_LPATH|^VUS\\_LB|^PATH|^VUS|^LB|^Normal]","", x)))
【问题讨论】: