R语言使用ifelse做数据筛选失效,结果无法转为数据框如何解决?
错误原因
你误用了向量化函数ifelse:ifelse是对输入向量的每一个元素逐行判断,返回长度和输入一致的结果,当你把dplyr::filter返回的整表作为返回值时,ifelse会自动将数据框按列拆分为列表输出,自然无法得到预期的表结构。同时你在filter中使用Table$前缀引用列属于多余操作,管道传递数据后直接写列名即可。
最优解决方法
直接在filter中写组合逻辑判断,无需分支语句,适配Signo_x1同时存在+/-的所有场景:
library(dplyr) result <- Table %>% filter( (Signo_x1 == "+" & coef_x1 >= 0) | (Signo_x1 == "-" & coef_x1 <= 0) )
运行后得到的result就是符合你预期的数据框。
可选:现有列表转数据框的方法
如果你要将已经得到的列表转为数据框,直接调用as.data.frame()即可:
Table_df <- as.data.frame(Table)
但该方法属于事后补救,更推荐直接修正筛选逻辑从根源得到正确结构的结果。
内容的提问来源于stack exchange,提问作者redondo
相关产品推荐
相关产品推荐

