R-仅允许列中的数字和点

R-仅允许列中的数字和点,r,regex,R,Regex,我有一个数据框,上面有这样的行 201712.20_16:26:;1.665855 1.28 2.00 0>86 271 327.4 这些都会被记录下来,有时在常规数字和日期之间会出现随机字母、数字或其他字符。如果一切正常,则应如下所示: 2017.12.20_11:19:58.132207 0.86 0.31 0.46 1.97 290.0 numbers_only <- function(x) !grepl("^0-9.", x) numbers_only(df$column

我有一个数据框,上面有这样的行

201712.20_16:26:;1.665855 1.28 2.00 0>86 271 327.4
这些都会被记录下来,有时在常规数字和日期之间会出现随机字母、数字或其他字符。如果一切正常,则应如下所示:

2017.12.20_11:19:58.132207 0.86 0.31 0.46 1.97 290.0
numbers_only <- function(x) !grepl("^0-9.", x)
numbers_only(df$column)
有没有办法删除所有不符合所需“模式”的行?可能是将列(日期列除外)限制为0到9和点之间的数字?并删除所有不属于这种情况的行

我试过这样的方法:

2017.12.20_11:19:58.132207 0.86 0.31 0.46 1.97 290.0
numbers_only <- function(x) !grepl("^0-9.", x)
numbers_only(df$column)

numbers\u only也许以下是您需要的

y <- c(
  "201712.20_16:26:;1.665855 1.28 2.00 0>86 271 327.4",
  "2017.12.20_11:19:58.132207 0.86 0.31 0.46 1.97 290.0"
)


numbers_only <- function(x) !grepl("[^[:digit:][:space:]:_.]", x)

numbers_only(y)
#[1] FALSE  TRUE

y看看
grep(“[^[:digit:[:space:::::。]”,x)
是否是您想要的。这非常有效!即使使用alnum而不是digit。非常感谢@BallerNacken您所说的只允许数字和点,带有字母字符的alnum也将有效。好的,更改了它。谢谢!