检查列中的每个值是字符串还是数字

时间:2016-10-07 01:21:57

标签: r regex string

我想弄清楚我的列中的每个值是数值还是非数值。

df = data.frame(help = c(456, 'superduper'),
                correct_answer = c("numeric","string"))

我已经逐行尝试过is.numeric或is.character,但这似乎不起作用,因为整个列都被编码为一个字符。

我知道这是一个基本问题,但任何帮助都是有用的。

2 个答案:

答案 0 :(得分:3)

我的第一个想法是考虑是否可以将值强制转换为数字。 E.g:

is.na(as.numeric(as.character(df$help)))
#[1] FALSE  TRUE

奖励是,这适用于数字格式的变体,例如33.2甚至3e5

答案 1 :(得分:1)

检查数字字符串的一个选项是用空字符串替换所有数字,然后检查结果长度是否为零:

is.help.numeric <- nchar(gsub("\\d+(\\.\\d+)?", "", df$help) == 0)

如果help中的指定条目甚至有一个非数字,则is.help.numeric中的相应条目将为FALSE