r - 列表中所有数据框中的R gsub列名称

标签 r list lapply gsub

我有一个带有列名的数据帧列表,我想替换掉一些字符串,但是我做不到。

list:
[1]
cpg value.TCGA.06.5415.01A     value.TCGA.02.0003.01A   value.TCGA.16.1062.01A
cg02726808  0.934641544 NA  NA
cg04243127  0.8828403   NA  NA
[2]
cpg value.TCGA.QH.A6CV.01A  value.TCGA.E1.A7Z4.01A  value.TCGA.E1.5303.01A
 cg02726808 0.938556343 0.92163563  0.959269597
 cg04243127 0.886928811 0.842963126 0.937700666
[N]
.....

Desired output:
    list:           
[1]         
cpg 06.5415.01A 02.0003.01A 16.1062.01A
cg02726808  0.934641544 NA  NA
cg04243127  0.8828403   NA  NA
[2]         
cpg QH.A6CV.01A E1.A7Z4.01A E1.5303.01A
cg02726808  0.938556343 0.92163563  0.959269597
cg04243127  0.886928811 0.842963126 0.937700666
[N]         
.....

我试图写以下内容:
lapply(lst, function(x) { gsub("value.TCGA.", "", colnames(lst[[x]]))})

R Studio中的错误:
Error in llis1[[xy]] : invalid subscript type 'list'
Called from: is.data.frame(x)
Browse[1]> 

我不明白这是怎么回事。谢谢你的帮助。

最佳答案

我们可以使用setNames将列名替换为sub中的新列名。

lapply(lst, function(x) setNames(x, sub("value.TCGA.", "", names(x))))

如果'value.TCGA',则另一个选项是substring。除第一个列名称外,所有列名称的位置均相同。
lapply(lst, function(x) setNames(x, c("cpg", substring(names(x)[-1], 12)))

关于r - 列表中所有数据框中的R gsub列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39715958/

相关文章:

r - 如何在lapply中动态命名文件?

r - 如何根据匹配 R 中其他几个列的行值来填充列的值

c# - 如何从 Unity 游戏对象列表中禁用子对象

c# - 从列表访问字典时出现异常

R:将多个 csv 文件的摘要合并到一个数据框中

r - 使用 lapply 更改列表中数据框的列名

c++ - R 的 sum() 和 Armadillo 的 accu() 之间的区别

r - 在 R 中删除基于名称的列表列表

r - dplyr 总结嵌套的 group_by

list - 在列表上应用函数的 "permutations"