R 缩短代码以过滤数据

R 缩短代码以过滤数据,r,filtering,R,Filtering,以这个代码为例: quite_long_data_frame_name <- data.frame(variable.name = rnorm(50, 3, 2)) quite_long_data_frame_name$variable.name[quite_long_data_frame_name$variable.name > 2 & quite_long_data_frame_name$variable.name < 3] <- NA quite_lon

以这个代码为例:

quite_long_data_frame_name <- data.frame(variable.name = rnorm(50, 3, 2))

quite_long_data_frame_name$variable.name[quite_long_data_frame_name$variable.name > 2 & quite_long_data_frame_name$variable.name < 3] <- NA

quite_long_data_frame_name 2和quite_long_data_frame_name$variable.name<3]使用
subset
和该逻辑向量的求反:

subset( quite_long_data_frame_name, !(variable.name > 2 & variable.name < 3) )
子集(相当长的数据帧名称!(variable.name>2&variable.name<3))
如果您想破坏性地修改原始文件,那么只需将该值指定给原始文件即可

如果您真的想要NA的结果:

within( quite_long_data_frame_name, is.na(variable.name) <- 
                                     (variable.name > 2 & variable.name < 3) )
内部(相当长的数据帧名称,is.na(variable.name)2和variable.name<3))

如果希望此结果替换原始结果,则需要重新指定相当长的数据帧名称。

dplyr
中,我想您会这样做

quite_long_data_frame_name %>%
mutate(variable.name=ifelse(variable.name>2 & variable.name<3, NA, variable.name))
还是挺长的。如果不至少输入3次
variable.name
,我不知道有什么方法可以做到这一点

为变量指定较短的名称?:)

请注意,如果您想实际进行过滤(在
dplyr
sense中),则更容易

quite_long_data_frame_name %>%
filter(variablename > 2 & variablename < 3)

@richardscriven我认为您误解了注意“过滤器”意味着子集(如在缩减中)数据,至少在dplyr上下文中是这样。您真正想做的是有条件地修改一些值。请注意,这会在
dplyr
意义上进行过滤,而不是像问题所建议的那样设置为
NA
。True。我将在
解决方案中提出一个
。Can
mutate
handle
is.naAFAIK
mutate
需要
变量。name=
但我对
dplyr
非常陌生,可能是错误的。这不起作用?:
mutate(is.na(variable.name)2&variable.name<3))
?写得不一样,但这并不意味着没有办法。
quite_long_data_frame_name %>%
filter(variablename > 2 & variablename < 3)
with(quite_long_data_frame_name, is.na(variable.name) <- variable.name %between% c(2, 3))