r - 从数据框中过去的值到矩阵的列名(在 R 中)
问题描述
我有一个数据框,其中行名中的单元格 ID 和列 x 中的分类。
x
ACCTTAC do
ACCGTGG si
AGTCGGG si
我还有一个矩阵,列中有单元格 ID,行中有基因。
ACCTTAC ACCGTGG AGTCGGG
Gene1 4 5 1
Gene2 3 1 0
Gene3 3 3 1
我想粘贴来自数据框的矩阵分类的列名,请参见下面的示例。
do_ACCTTAC si_ACCGTGG si_AGTCGGG
Gene1 4 5 1
Gene2 3 1 0
Gene3 3 3 1
dput(df)
structure(list(x = c("do", "si", "si"), row.names = c("ACCTTAC", "ACCGTGG", "AGTCGGG"), class = "data.frame"))
mat = matrix(c(8,4,5,6,7,9,1,8,9),nrow = 3, ncol = 3,byrow = TRUE)
mat <- matrix(1:9, nrow = 3,dimnames = list(c("Gene1","Gene2","Gene3"), c("ACCTTAC","ACCGTGG","AGTCGGG")))
解决方案
Les 根据您的数据代码使用 colnames 和 rownames:
dataframe <- data.frame(x = c("do", "si", "si"),
row.names = c("ACCTTAC", "ACCGTGG", "AGTCGGG"))
mat <- matrix(c(8,4,5,6,7,9,1,8,9),nrow = 3, ncol = 3,byrow = TRUE)
mat <- matrix(1:9, nrow = 3,dimnames = list(c("Gene1","Gene2","Gene3"),
c("ACCTTAC","ACCGTGG","AGTCGGG")))
dataframe$col_names <- row.names(dataframe)
for(i in 1:ncol(mat)) {
for(j in 1:nrow(dataframe)) {
if(row.names(dataframe)[j] == colnames(mat)[i])
colnames(mat)[i] = paste0(dataframe$x[j],"_",dataframe$col_names[j])
}
}
结果是:
> mat
do_ACCTTAC si_ACCGTGG si_AGTCGGG
Gene1 1 4 7
Gene2 2 5 8
Gene3 3 6 9
推荐阅读
- python - 动态规划 - 洗车
- amazon-web-services - 使用 terraform 创建 ec2 实例时生成包含“IP 地址”的 user_data
- c++ - 一旦对象设置为null,用于声明对象堆大小的变量被设置为null?
- android - android apk jenkins 的存档工件
- python - Python:编写识别对象并对其进行计数的代码
- php - Unix 时间到第二天的时间戳
- android - 使用默认视频意图 ACTION_VIDEO_CAPTURE 录制不带声音的视频或在视频录制后删除声音,例如快速聊天
- python - Pyspark 在计算一列的偏度时不显示任何内容
- listview - 如何在颤动中准确使用 ListWheelScrollView?
- mailgun - 可以使用接收者变量有条件地渲染部分吗