Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有方法从data.frame中具有相似后缀的不同列中选择行?_R - Fatal编程技术网

是否有方法从data.frame中具有相似后缀的不同列中选择行?

是否有方法从data.frame中具有相似后缀的不同列中选择行?,r,R,我在R中有一个数据帧,如下所示 PROBE_ID H_1AVG_Signal H_1Detection Pval H_2AVG_Signal H_2Detection Pval GH_1AVG_Signal GH_1Detection Pval ILMN_1343291 47631.78 0.00 53022.43 0.00 46567.29 0.00 ILMN_1651229 135.42

我在R中有一个数据帧,如下所示

PROBE_ID    H_1AVG_Signal   H_1Detection Pval   H_2AVG_Signal   H_2Detection Pval   GH_1AVG_Signal  GH_1Detection Pval
ILMN_1343291    47631.78    0.00            53022.43    0.00            46567.29    0.00
ILMN_1651229    135.42      0.01            161.59      0.01            162.46      0.04
ILMN_1651260    80.81       0.86            88.05       0.86            92.45       0.89
ILMN_1651279    143.65      0.01            138.96      0.04            113.29      0.47
PROBE_ID    H_1AVG_Signal   H_1Detection Pval   H_2AVG_Signal   H_2Detection Pval   GH_1AVG_Signal  GH_1Detection Pval
ILMN_1343291    47631.78    0.00            53022.43    0.00            46567.29    0.00
ILMN_1651229    135.42      0.01            161.59      0.01            162.46      0.04
是否有任何可能的方法使用公共后缀detection Pval对所有样本的包含探测p值<0.05的探针ID的数据进行子集划分,以最终获得如下子集数据

PROBE_ID    H_1AVG_Signal   H_1Detection Pval   H_2AVG_Signal   H_2Detection Pval   GH_1AVG_Signal  GH_1Detection Pval
ILMN_1343291    47631.78    0.00            53022.43    0.00            46567.29    0.00
ILMN_1651229    135.42      0.01            161.59      0.01            162.46      0.04
ILMN_1651260    80.81       0.86            88.05       0.86            92.45       0.89
ILMN_1651279    143.65      0.01            138.96      0.04            113.29      0.47
PROBE_ID    H_1AVG_Signal   H_1Detection Pval   H_2AVG_Signal   H_2Detection Pval   GH_1AVG_Signal  GH_1Detection Pval
ILMN_1343291    47631.78    0.00            53022.43    0.00            46567.29    0.00
ILMN_1651229    135.42      0.01            161.59      0.01            162.46      0.04
我真的很感激关于如何创建这样一个子集的建议。
谢谢。

如果您总是知道您将拥有的列名,那么您可以使用dplyr筛选器获得所需的结果

library(dplyr)

main.df <- main.df %>%
           filter(`H_1Detection Pval` < 0.05 | `H_2Detection Pval` < 0.05 | `GH_1Detection Pval` < 0.05)
如果您不总是知道列名,可以动态地获取它们,并将它们插入到dplyr filter_uu命令中,如下所示

library(dplyr)
# Find any columns that contain "detection" in the column name
det.cols <- colnames(main.df)[which(grepl("detection",tolower(colnames(main.df))))]

# Create a filter string from the column names in the format of
# "`column name` < 0.05 | `column name2` < 0.05"
filt <- gsub(","," | ",toString(paste("`",det.cols,"`"," < 0.05", sep = "")))

# Apply the filter to the dataframe
main.df <- main.df %>%
           filter_(filt)
filter_at是对列进行动态检测的一种更简单的方法,如中所述


main.df%>%filter\u atvarscontainsDetection Pval,.vars\u predicate=any\u vars.<0.5

欢迎来到StackOverflow!请阅读相关信息以及如何给出建议。这将使其他人更容易帮助您。您可能需要类似以下内容:df[rowSumsdf[,grepl'Detection Pval',namedf,fixed=TRUE]<0.05>0,]@Jaap,谢谢。我编辑了我的问题,希望现在更好。我尝试了代码,但matrixunlistvalue中出现错误,recursive=FALSE,use.names=FALSE,nrow=nr,:“data”必须是向量类型,是“NULL”您的数据帧的classname\u返回什么?@Jaap it返回数据。frameThank。parsetext=x中出现错误:尝试对将筛选器应用于DataFrame的最后一个代码使用零长度变量名确保替换det.cols中main.df的两个实例我确实用数据名替换了main.df。我只得到了上一个代码的错误。我猜它没有得到列名称中包含检测的列的任何匹配项,这将为det.cols创建一个空向量。由于det.cols为空,因此导致错误出现在最后一行。请注意,此代码将列名与所有小写字母进行比较,因此请确保将det.cols行中的grepl模式保留为所有小写字母,否则它将不会返回任何值。我尝试将标题更改为小写,但它返回的筛选数据没有错误消息。但现在过滤的数据中含有ILMN_1651279基因,第三个样本的检测pval>0.05。