如何用NA
替换不具有10位数的电话号码c(99887766, 998877665521, 9897932453)
预期产出:
NA, NA, 9897932453
答案 0 :(得分:4)
我们使用Window --> Preferences --> General --> Editors --> Text Editors
创建一个逻辑向量,并将那些没有10个字符的对象分配为NA
nchar
或另一种选择是
v1[nchar(v1) != 10] <- NA
v1
#[1] NA NA 9897932453
v1[!grepl('^.{10}$', v1)] <- NA
答案 1 :(得分:3)
使用简单的数学。我们知道log10(1000000000)
为9,log10(10000000000)
为10.因此:
v1 <- c(99887766, 998877665521, 9897932453)
is.na(v1) <- log10(v1) >= 10 | log10(v1) < 9
v1
#[1] NA NA 9897932453
我假设输入没有小数部分。
PS:你甚至不需要日志。您也可以与1e9和1e10进行比较。
答案 2 :(得分:2)
一种方法是使用函数is.na<-
就像帮助页面所说的那样,value
是函数参数的索引向量。在这种情况下,逻辑索引。
v1 <- c(99887766, 998877665521, 9897932453)
is.na(v1) <- nchar(v1) != 10
v1
#[1] NA NA 9897932453
答案 3 :(得分:2)
您可以使用ifelse()
:
phones <- c(99887766, 998877665521, 9897932453)
ifelse(nchar(phones) != 10, NA, phones)
[1] NA NA 9897932453