r - 如何使用 lapply、sapply 或 apply 在 R 中过滤数据框?
问题描述
我正在尝试删除所有不包含 10 位数字的字段和那些有 10 个零的字段,我想使用 lapply 或 sapply 或 apply 函数来实现这一点。我下面的代码不起作用:
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])
推荐阅读
- asp.net - 在实际更新过程中显示每 5 秒更新的记录数作为进度
- python - 使用 django 时出现此错误是什么意思?
- react-native - 函数不是函数 - react-native
- java - 使用 Java & Gradle 从 github 构建一个 maven 项目
- angular - Angular 4:Viewchild 设置焦点
- java - 如何以编程方式关闭并重新启动应用程序?
- json - Jmeter在jmeter json提取器中提取空值
- python - 如何从文本文件创建复杂的字典?
- sonarqube - [Sonarqube][Java]Printf风格的格式字符串应该正确使用
- android - Gradle 正在构建,但我的 apk 没有构建。以下是调试报告