[英]Removing characters in a string with R
當它們應該是數字時,如何刪除DF中包含字母的行? 表格示例可能是:
DT = data.table(x=c("b","b","b","a","a"),v=rnorm(5), j=c("122","1223","g21bg","43","534"))
DF=data.frame(DT)
我需要得到:
x v j
b 0.4220836 122
b -1.9492471 1223
a 1.4615694 43
a -0.2294917 534
可以是任何非數字字符。 我試過了
library(stringr)
str_detect(DF$j, letters)
但我得到:
check_pattern(pattern,string)出錯:字符串和模式的長度不兼容
使用grepl
DF[!grepl("[A-Za-z]", DF$j), ]
## x v j
##1 b -1.3157423 122
##2 b -1.3514456 1223
##4 a 0.7508370 43
##5 a 0.3476453 534
但是,實際上,你有一個data.table
對象,為什么data.frame
它轉換為data.frame
? 這對我沒有任何意義。 您可以在原始data.table
執行相同的data.table
DT[!grepl("[A-Za-z]", j), ]
# x v j
# 1: b 0.03008628 122
# 2: b -0.72063192 1223
# 3: a 0.94851720 43
# 4: a -0.72384496 534
或者使用grep
與invert = TRUE
結合使用
DT[grep("[A-Za-z]", j, invert = TRUE), ]
或者如果你想使用str_detect
(就像在帖子中一樣)
library(stringr)
DT[!str_detect(j, "[A-Za-z]"), ]
雖然str_detect
僅僅是一個包裝grepl
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.