我的数据如下:
SNP A1 A2 EFF FRQ
rs12565286 C G -0.00225985777786465 .04354
rs11804171 A T -0.00530020318295282 .04485
rs3094315 A G -0.0042551489236695 .8364
rs12562034 A G -0.00911972489527125 .09763
rs12124819 A G 0.0250148724382224 .
rs2980319 A T 0.0178927256033542 .1306
rs4040617 A G -0.0173263263037023 rabbit
我想删除包含“。”的行。那包含“兔子”。有没有办法保持数字?我想这样做的原因是因为我使用大型数据文件进行操作,我收到1 - gwas.data$FRQ[i] : non-numeric argument to binary operator
错误。我是否正确地假设错误是因为某些数据不是数字?我甚至没有检查数据中的数据是否包含非数字值,因为它的长度为300万行。
答案 0 :(得分:2)
示例data.frame:
df <- data.frame(a=1:10, b=1:10, FRQ=c(rnorm(8), '.', 'rabbit'), stringsAsFactors=FALSE)
要检查所有列的类,请尝试:lapply(df, class)
如果FRQ列是字符,您可以通过删除所有非数字将其转换为数字,然后转换为数字。像这样:
library(stringr)
df <- df[!str_detect(df$FRQ, '([A-Za-z])'), ]
df <- df[!str_detect(df$FRQ, '\\.$'), ]
df$FRQ <- as.numeric(df$FRQ)