我有一个df,其中包含如下所示的连名:

[1] "lab_id"               "weeks"                "group"      
[4] "level"                "id_row"               "id"                  
[7] "number"               "tube"                 "dp"              
[10] "time"                "label"                "age"                 
[13] "gender"              "wtspike_ab1"         "wtrbd_ab1"          
[16] "wts1_ab1"            "wts2_ab1"             "wtntd_ab2"          
[19] "wtn_ab2"             "alphaspike_ab2"       "alpharbd_ab2"       
[22] "betaspike_ab2"       "betarbd_ab2"          "gammaspike_ab2"     

我的目标是通过列名过滤这个df,使用以下方法:

test1 <- test[, test <- grepl('wtspike|wtrbd|wts1|wts2|wtntd|wtn', colnames(test))]

这会过滤掉与模式不匹配的colnames个,这很好.然而,正在go 掉元数据列1:14,所以我try 使用类似的东西来避免在列1:14中执行该操作.

filtered_test <- test[, 1:14(test) & grepl('wtspike|wtrbd|wts1|wts2|wtntd|wtn', colnames(test))]

这给出了以下错误:

Error: attempt to apply non-function

我的问题是,在不取列1:14的情况下,我可以使用什么替代方法来执行相同的操作.

  • 做手术是不是更好的 Select ?
  • 我的台词出了什么问题,让我犯了那个错误?

推荐答案

我认为您正在努力使所有列都与您的grepl以及列1-14匹配(无论它们是否匹配).或许是这个?

mt <- mtcars[1:3,]
mt[, grepl("d|w", colnames(mt))]
#               disp drat    wt
# Mazda RX4      160 3.90 2.620
# Mazda RX4 Wag  160 3.90 2.875
# Datsun 710     108 3.85 2.320

如果我们还想保留前两列(类似于您的1:14列),那么

mt[, replace(grepl("d|w", colnames(mt)), 1:2, TRUE)]
#                mpg cyl disp drat    wt
# Mazda RX4     21.0   6  160 3.90 2.620
# Mazda RX4 Wag 21.0   6  160 3.90 2.875
# Datsun 710    22.8   4  108 3.85 2.320

或另一种方法(结果相同):

mt[, seq_along(mt) %in% 1:2 | grepl("d|w", colnames(mt))]
#                mpg cyl disp drat    wt
# Mazda RX4     21.0   6  160 3.90 2.620
# Mazda RX4 Wag 21.0   6  160 3.90 2.875
# Datsun 710    22.8   4  108 3.85 2.320

R相关问答推荐

将一个载体的值相加,直到达到另一个载体的值

根据模式将一列拆分为多列,并在R中进行拆分

如何通过Docker部署我的shiny 应用程序(多个文件)

如何改变时间图R中的悬停信息?

在R gggplot2中是否有一种方法将绘图轴转换成连续的 colored颜色 尺度?

如何在R中描绘#符号?

根据列A中的差异变异列,其中行由列B中的相对值标识

根据现有列的名称和字符串的存在进行变异以创建多个新列

您是否可以折叠R中的重复行,同时保留基于所选列的值?

从多层嵌套列表构建Tibble?

将全局环境变量的名称分配给列表中的所有元素

如何将一列中的值拆分到R中各自的列中

我将工作代码重构为一个函数--现在我想不出如何传递轴列参数

通过初始的shiny 应用更新部署的shiny 应用的数据和参数,其中部署的应用程序显示为URL

使用列中的值来调用函数调用中应使用的其他列

如何移动点以使它们的打印不重叠

整理ggmosaic图的标签

需要一个函数来在第一行创建一个新变量,然后用新变量替换一个不同的变量(对于多行)

根据排名的顶点属性调整曲线图布局(&Q)

随机生成样本,同时在R内的随机样本中至少包含一次所有值