如果 R 中的行是否为数字,则拆分数据框

Splitting a dataframe if rows are numeric or not in R

我有一个数据框(我们称它为 'df'),它由两列组成

 Name   Contact
 A      34552325
 B      423424
 C      4324234242
 D      hello1@company.com

我想根据 "Contact" 列中的一行是否为数字将数据帧拆分为两个数据帧

预期输出:

 Name   Contact
 A      34552325
 B      423424
 C      4324234242

 Name   Contact
 D      hello1@company.com

我厌倦了使用:

   df$IsNum <- !(is.na(as.numeric(df$Contact))) 

但这也将 "hello1@company.com" 分类为数字。

基本上,即使在 "Contact" 列中有一个非数值,代码也必须将其分类为非数值

您可以使用grepl..

x <- " Name   Contact
 A      34552325
 B      423424
 C      4324234242
 D      hello1@company.com"
df <- read.table(text=x, header = T)
x <- df[grepl("^\d+$",df$Contact),]
y <- df[!grepl("^\d+$",df$Contact),]
x
#   Name    Contact
# 1    A   34552325
# 2    B     423424
# 3    C 4324234242
y
#  Name            Contact
# 4    D hello1@company.com

我们可以使用 grepl 创建一个分组变量(与@Avinash Raj 创建的方式相同),split 数据框创建 list 的 data.frames .

split(df, grepl('^\d+$', df$Contact))