我正在寻找一个简单的解决方案,只将我的列重命名为中间分隔符.下面是一些模拟数据.

dat <- data.frame(
  
  subject = paste("Subject", 1:10),
  CT_tib_all = round(rnorm(10, 0.25, 0.03), 2),
  CT_lum_all = round(rnorm(10, 0.25, 0.03), 2),
  CT_tho_all = round(rnorm(10, 0.25, 0.03), 2)
  
)

我想从这里开始:

    subject CT_tib_all CT_lum_all CT_tho_all
1 Subject 1       0.25       0.27       0.26
2 Subject 2       0.24       0.19       0.21

为此:

    subject        tib        lum        tho
1 Subject 1       0.25       0.27       0.26
2 Subject 2       0.24       0.19       0.21

谢谢

推荐答案

可能有更优雅的解决方案,但请try 以下方法:

colnames(dat)[-1] <- sapply(strsplit(colnames(dat[-1]), "_"), function(x) x[2])

#> dat
#      subject  tib  lum  tho
#1   Subject 1 0.17 0.21 0.20
#2   Subject 2 0.27 0.23 0.28
# ...

这将忽略第一(subject)列,sapply()将找到其余列下划线之间的所有内容.

R相关问答推荐

如何在ggplot 2线性图的每个方面显示每个组的误差条?

R for循环返回到先前值

如何在编辑列时更新可编辑数据表,并使用该表在Shiny中执行连续计算

bslib::card_header中的shine::downloadButton,图标而不是文本

如何优化向量的以下条件赋值?

为什么舍入POSIXct会更改能力以匹配等效的POSIXct?

删除具有相同标题的tabPanel(shinly)

根据日期从参考帧中创建不同的帧

使用R中的正则表达式将一列分割为多列

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

在不丢失空值的情况下取消列出嵌套列表

将重复项转换为NA

如何识别倒排的行并在R中删除它们?

R -使用矩阵reshape 列表

在R中,如何将误差条放置在堆叠的每个条上?

在R中的数据框上使用Apply()函数时,如何保留非数字列?

如何在R中创建条形图,使条形图在y轴上围绕0.5而不是0构建条形图?

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

如果y中存在x中的值,则将y行中的多个值复制到相应的x行中

如何在网页抓取中自动更改页码?