我试图筛选出NA
,NaN
和Inf
值超出使用dyplr
的filter
功能tbl
的。过滤器变量,其列名称包含模式
诀窍是我只想将过滤器应用于名称包含特定模式的列。该模式是:r1,r2,r3等
我试图结合grep
和filter
来实现这一目标,但无法使其工作。我目前的代码如下所示:
filter_(!is.na(grep("r[1-9]", colnames(DF), value = TRUE))
& !is.infinite(grep("r[1-9]", colnames(DF), value = TRUE))
& !is.nan(grep("r[1-9]", colnames(DF), value = TRUE)))
但是,此代码返回警告消息:“截断向量为1”。 并且返回的数据未经过滤。
我怀疑它是这里的is.na
功能所引起的问题,因为我已经看到了一个例子在线,您可以使用正常情况下适用grep
到filter
(即condition == value
),而不是基于is.na
你能提供你的数据集的[重复的例子(https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? –
我认为问题在于你正在为'NA','NaN'和'Inf'测试'colnames(DF)',它应该是那些列中的值。 (那些匹配你的模式'r [1-9]'。) –