簡體   English   中英

如何使用 lapply、sapply 或 apply 過濾 R 中的數據框?

[英]How can I use lapply, sapply or apply to filter a data frame in R?

我正在嘗試刪除所有不包含 10 位數字和包含 10 個零的字段,我想通過 lapply 或 sapply 或應用 function 來實現這一點。 我下面的代碼不起作用:

lapply(df, function(x) filter(x %like% "^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]" | !x %in% "0000000000"))

10 個零是 10 位數字的一部分,因此您無需單獨測試它們。

df <- data.frame(a = c('123456789', '123456789', '123'), 
                 b = c('0000000000', '2345', '1234'))

result <- lapply(df, function(x) grep('\\d{10}', x, value = TRUE, invert = TRUE))

#$a
#[1] "123456789" "123456789" "123"      

#$b
#[1] "2345" "1234"

您還可以使用nchar來計算字符數。

result <- lapply(df, function(x) x[nchar(x) != 10])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM