r - 无法过滤 r 中的文本数据(使用 dplyr 库)
问题描述
我有一个可用于以下字段的数据集(请参阅数据库: Sum2),我想在“var”列上应用过滤器
数据库: Sum2
IID var Data
1 993 A 804584
2 993 G 455158
3 993 A 640008724
4 993 M 900007602
5 993 T 40415
6 993 R 884
7 993 T -1752
8 993 R 1950
++++ More 5k field
以下是从上表中删除“A”和“M”数据的代码
library(dplyr)
noscope = c("A", "M")
sum2 %>% select(IID ,var ,Data) %>% Filter(var != noscope)
运行上述代码后收到以下错误:
Error in get(as.character(FUN), mode = "function", envir = envir) :
object 'f' of mode 'function' was not found
我也在“var”列上尝试过 as.character() 但仍然对我不起作用。
我错过了上面的代码吗?
谢谢。
解决方案
我们需要使用%in%
andfilter
而不是Filter
.
library(tidyverse)
Sum2 %>%
select(IID, var, Data) %>%
filter(!var %in% noscope)
# IID var Data
#1 993 G 455158
#2 993 T 40415
#3 993 R 884
#4 993 T -1752
#5 993 R 1950
注意:Filter
是一个base R
函数,传递的参数是不同的。关于!=
,它在我们与单个字符串字符进行比较时起作用。这里有不止一个,所以我们检查%in%
并稍后取反(!
)
数据
Sum2 <- structure(list(IID = c(993L, 993L, 993L, 993L, 993L, 993L, 993L,
993L), var = c("A", "G", "A", "M", "T", "R", "T", "R"), Data = c(804584L,
455158L, 640008724L, 900007602L, 40415L, 884L, -1752L, 1950L)),
class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8"))
推荐阅读
- jquery - 动画自定义幻灯片相反方向
- django - 测试编辑 URL 时出现 Django AssertionError
- shell - 我的服务器被入侵了。这套外壳线是什么意思?
- javascript - 如何修复“模块不可用!” 在对 Hybrid Angular 应用程序进行单元测试时
- python - 具有唯一字段的 Django UpdateView
- javascript - 在父级中添加一个变量来触发一个函数 - Vue
- android - RecyclerView“无法解析符号”错误
- c++ - 如何增加 OpenCV 的可用内存
- c - 如何在C中将数组元素移动n个位置
- javascript - 无法安装组件:未定义模板或渲染函数 - 使用 Laravel-mix 时出现 vue 警告