我想重命名一个数据帧的列(从10th列到第second last列).我的代码根本没有修改列名.

all.lesions <- data.frame(t(apply(all.lesions, 1, unlist)), check.names = FALSE)
colnames(all.lesions[10:ncol(all.lesions)-1]) <- sub('^([^.]+.[^.]+.[^.]+.[^.]+).*', '\\1', colnames(all.lesions[10:ncol(all.lesions)-1]))
colnames(all.lesions[10:ncol(all.lesions)-1]) <- substring(colnames(all.lesions[10:ncol(all.lesions)-1]), 1, nchar(colnames(all.lesions[10:ncol(all.lesions)-1]))-1)

输入:

> dput(all.lesions[1:2,c(9:16,length(colnames(all.lesions)))])
structure(list(Amplitude.Threshold = c("0: t<0.1; 1: 0.1<t< 0.9; 2: t>0.9", 
"0: t<0.1; 1: 0.1<t< 0.9; 2: t>0.9"), TCGA.2K.A9WE.01A.11D.A381.01 = c(0, 
0), TCGA.2Z.A9J1.01A.11D.A381.01 = c(0, 0), TCGA.2Z.A9J2.01A.11D.A381.01 = c(0, 
0), TCGA.2Z.A9J3.01A.12D.A381.01 = c(0, 0), TCGA.2Z.A9J5.01A.21D.A381.01 = c(1, 
1), TCGA.2Z.A9J6.01A.11D.A381.01 = c(0, 0), TCGA.2Z.A9J7.01A.11D.A381.01 = c(0, 
0), X = c(NA, NA)), row.names = 1:2, class = "data.frame")

> dput(names(all.lesions)[10:ncol(all.lesions)])
c("TCGA.2K.A9WE.01A.11D.A381.01", "TCGA.2Z.A9J1.01A.11D.A381.01", 
"TCGA.2Z.A9J2.01A.11D.A381.01", "TCGA.2Z.A9J3.01A.12D.A381.01", 
"TCGA.2Z.A9J5.01A.21D.A381.01", "TCGA.2Z.A9J6.01A.11D.A381.01"
"X")

> class(all.lesions)
[1] "data.frame"
> typeof(all.lesions)
[1] "list"

预期输出:

[1] "TCGA.2K.A9WE.01"
[3] "TCGA.2Z.A9J1.01" "TCGA.2Z.A9J2.01"
[5] "TCGA.2Z.A9J3.01"

推荐答案

最新情况: 这应该是可行的:

# colnames vector
x <- colnames(all.lesions)[10:(ncol(all.lesions) - 1)] 
# do the regex
sub("^(\\w+\\.\\w+\\.\\w+\\.\\w+)\\..*", "\\1", x)
# use setNames
setNames(all.lesions)[10:(ncol(all.lesions) - 1)], x)

以下是使用5个列名作为向量并使用正则表达式应用sub的解决方案: 在更改列名的向量之后,我们可以使用?setNames(object = nm, nm)来重命名列名.

all.lesions <- x[1:5]

sub("^(\\w+\\.\\w+\\.\\w+\\.\\w*)\\A.*", "\\1", all.lesions)
[1] "TCGA.2K.A9WE.01" "TCGA.2Z.A9J1.01"
[3] "TCGA.2Z.A9J2.01" "TCGA.2Z.A9J3.01"
[5] "TCGA.2Z.A9J5.01"

R相关问答推荐

计算转换的次数

如何按行和列组合多个格式?

使用lares::corr_var函数在for循环中分配变量的问题

使用R中相同值创建分组观测指标

如何在ggplot图中找到第二轴的比例

将小数分隔符放在R中的前两位数字之后

以更少间隔的较小表中的聚合离散频率表

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

为什么在BASE R中绘制线条时会看到线上的点?

R如何计算现有行的总和以添加新的数据行

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

自动STAT_SUMMARY统计与手动标准误差之间的差异

如何在PrePlot()中将多个元素设置为斜体

将多个列合并为一个列的有效方法是什么?

计算使一组输入值最小化的a、b和c的值

为什么函数toTitleCase不能处理english(1),而toupper可以?

计算Mean by分组和绑定到R中的数据集

ggplot斜体轴刻度标签中的单个字符-以前的帖子建议不工作

我正在try 创建一个接近cos(X)的值的While循环,以便它在-或+1-E10范围内

R try Catch in the loop-跳过缺少的值并创建一个DF,显示跳过的内容