我想从data.frame中删除一些格式为00.00.00U的变量,例如:消除包含以下内容的向量:
toMatch<-paste(c(18.00.00:20.00.00),c('U','B','R'))
Errore: unexpected numeric constant in "toMatch<-paste(c(18.00.00"
我需要消除18.00.01
,18.00.02
等,直到20.00.00
并且我不想全部写出来。
感谢
答案 0 :(得分:0)
首先必须生成代码:
codes<-sapply(180001:200000,
function(x){
decomp<-unlist(strsplit(as.character(x),""))
y<-paste(paste(decomp[seq(1,6,2)],decomp[seq(2,6,2)],sep=""),collapse=".")
return(y)})
然后你可以这样做:
toMatch<-paste(rep(codes,e=3),c('U','B','R'),sep="")
toMatch[1:5]
[1] "18.00.01U" "18.00.01B" "18.00.01R" "18.00.02U" "18.00.02B"
答案 1 :(得分:0)
尝试
op <- options(scipen=100, digits=2)
s1 <- seq(180001, 200000, by=1)
s2 <- sprintf('%02d.%02d.%02d',
as.numeric(substr(s1,1,2)),
as.numeric(substr(s1,3,4)),
as.numeric(substr(s1,5,6)))
toMatch <- paste0(s2, rep(c('U', 'B', 'R'),each=length(s2)))
head(toMatch)
#[1] "18.00.01U" "18.00.02U" "18.00.03U" "18.00.04U" "18.00.05U" "18.00.06U"
如果df
是数据集,并且您想删除与toMatch
中与特定列Col1
df1 <- df[!df$Col1 %in% toMatch, ]