在不影响值的情况下右移列名称
shift col names by right without compromising the values
我的数据如下所示:
我想在不影响值的情况下将 ENSG0000000223972.5 右移一位。
因此 ENSG0000223972.5 应该取代 ENSGOOOO227232.5 等等。在不更改值的情况下将列名向右移动 1 个位置。所以最终 row1col1 名称将为空。
我尝试这样做:
names(genecount) = names(genecount)[-1]
基数 R 的一种可能性是首先创建一个空列(即 new
),这样我们就可以将列名向右移动。然后,您想使用从第一列到最后一列(减去 new
列)的名称来覆盖列名称。但是,我还为第一列添加了一个名为 name
.
的名称
df$new <- ""
names(df)[1:ncol(df)] <- c("name", names(df)[1:ncol(df) - 1])
可能的tidyverse
解决方案:
library(tidyverse)
df %>%
mutate(new = NA) %>%
column_to_rownames(names(df)[1]) %>%
rename_all(~names(df)) %>%
rownames_to_column("name")
输出
name ENSGO00000223972.5 ENSG00000227232.5 ENSGO0000278267.1 ENSGO0000243485.5
1 GTEX-1117F-0226-SM-5GZZ7 0 187 0
2 GTEX-1117F-0426-SM-5EGHI 0 109 0
数据
df <- structure(list(ENSGO00000223972.5 = c("GTEX-1117F-0226-SM-5GZZ7", "GTEX-1117F-0426-SM-5EGHI"),
ENSG00000227232.5 = c(0, 0),
ENSGO0000278267.1 = c(187, 109), ENSGO0000243485.5 = c(0, 0)),
class = "data.frame", row.names = c(NA, -2L))
我的数据如下所示:
我想在不影响值的情况下将 ENSG0000000223972.5 右移一位。 因此 ENSG0000223972.5 应该取代 ENSGOOOO227232.5 等等。在不更改值的情况下将列名向右移动 1 个位置。所以最终 row1col1 名称将为空。 我尝试这样做:
names(genecount) = names(genecount)[-1]
基数 R 的一种可能性是首先创建一个空列(即 new
),这样我们就可以将列名向右移动。然后,您想使用从第一列到最后一列(减去 new
列)的名称来覆盖列名称。但是,我还为第一列添加了一个名为 name
.
df$new <- ""
names(df)[1:ncol(df)] <- c("name", names(df)[1:ncol(df) - 1])
可能的tidyverse
解决方案:
library(tidyverse)
df %>%
mutate(new = NA) %>%
column_to_rownames(names(df)[1]) %>%
rename_all(~names(df)) %>%
rownames_to_column("name")
输出
name ENSGO00000223972.5 ENSG00000227232.5 ENSGO0000278267.1 ENSGO0000243485.5
1 GTEX-1117F-0226-SM-5GZZ7 0 187 0
2 GTEX-1117F-0426-SM-5EGHI 0 109 0
数据
df <- structure(list(ENSGO00000223972.5 = c("GTEX-1117F-0226-SM-5GZZ7", "GTEX-1117F-0426-SM-5EGHI"),
ENSG00000227232.5 = c(0, 0),
ENSGO0000278267.1 = c(187, 109), ENSGO0000243485.5 = c(0, 0)),
class = "data.frame", row.names = c(NA, -2L))