tiangou日记 2023-04-16 20:35 采纳率: 28.6%
浏览 18
已结题

r语言subset或filter

类似于subset或filter功能中,对数据框中所有列进行筛选,怎么选择所有列啊?就是想对数据框里的所有数值进行筛选,保留±0.8以外的数据,怎么写啊,我总感觉一个语句就可以的,百度了一天,不会啊。

#我的错误代码:
data6 <- data1 %>% filter(across(everything(), ~.x >= 0.8 & ~.x <= -0.8))
#报错:
Error in `filter()`:
i In argument: `across(everything(), ~.x >= 0.8 & ~.x <= -0.8)`.
Caused by error in `across()`:
! Can't compute column `A2ML1`.
Caused by error in `.x >= 0.8 & (~ .x <= -0.8)`:
! operations are possible only for numeric, logical or complex types
Run `rlang::last_trace()` to see where the error occurred.

#我的错误瞎写的代码
data5 <- subset.data.frame(data1, abs(data1) >= 0.8)
#结果不对。。。
  • 写回答

2条回答 默认 最新

  • tiangou日记 2023-04-16 23:44
    关注

    可以了,但是不知道哪一步(可能是apply引起的),导致行名中多了全部的列名,数值处显示为1,不知道咋弄,反正是删除就好了。

    
    library("dplyr")
    setwd("F:\\shi")
    data1 <- read.csv("lncRNA-GPCR_DGE.csv", header = TRUE, sep = ",", row.names = 1)
    # 用apply筛选数据
    data9 <- apply(data1, 1, function(x) x[abs(x) >=0.8])
    # 转换为数据框形式
    data10 <- data.frame(t(sapply(data9, "[", i = 1:max(sapply(data9, length)))))#按列
    data10[data10=='1'] <- NA
    # 或者新建函数removeRowsAllNa,删除数据框中全部为NA的行
    removeRowsAllNa  <- function(x){x[apply(x, 1, function(y) any(!is.na(y))),]}
    data10_2 <- removeRowsAllNa(data10)
    write.csv(data10_2,"data10_2.csv")
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月24日
  • 已采纳回答 4月16日
  • 创建了问题 4月16日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助