Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 更改选定列的列名_R_Dplyr_Rename - Fatal编程技术网

R 更改选定列的列名

R 更改选定列的列名,r,dplyr,rename,R,Dplyr,Rename,我想用第一行数据更改列名 在我之前的帖子中,我是为那个部分工作的 另外,在setNames函数中,我想再添加一个级别,仅更改选定列的列名 问题就在这里 df <- data.frame(replicate(10,sample(100,2,rep=TRUE))) X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 1 76 44 89 13 8 31 12 21 50 36 2 78 27 81 75 61 84 2 65 43 51 library(dplyr)

我想用第一行数据更改列名

在我之前的帖子中,我是为那个部分工作的

另外,在
setNames
函数中,我想再添加一个级别,仅更改选定列的列名

问题就在这里

df <- data.frame(replicate(10,sample(100,2,rep=TRUE)))

  X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
1 76 44 89 13  8 31 12 21 50  36
2 78 27 81 75 61 84  2 65 43  51

library(dplyr)
df1 <- df %>%
  select(X1:X5)%>%
  setNames(as.character(.[1,]))
好吧,很公平!但是我想保留列名称,比如说
X1、X2
X3
,并且只从X4更改为最大列数

所以我试着

df1 <- df %>%
  select(X1:X5)%>%
  setNames(as.character(.[1,X4:max(ncol(.))]))
正如我们在这里所看到的,名字发生了变化。命名从第一列开始,即使我用
4:max(ncol(.))指定了列位置

为什么会这样? 任何帮助都将不胜感激

预期产出。(我还想删除此setName操作后的第一行)


这将实现以下目的:

require(tidyverse)

#Using your dataset
df <- data.frame(replicate(10,sample(100,2,rep=TRUE)))

df %>% 
  set_names(c(names(df)[1:3], as.character(.[1,])[4:10])) %>% 
  rownames_to_column("index") %>% 
  filter(index != 1 ) %>% 
  select(-index)

  X1 X2 X3 16 56 51 11 21 61 37
1 43 15 75 38 70 20 63 70 53 79
require(tidyverse)
#使用数据集
df%
设置_名称(c(名称(df)[1:3],作为.character([1,])[4:10]))%>%
行名到列(“索引”)%>%
过滤器(索引!=1)%>%
选择(-index)
X1 X2 X3 16 56 51 11 21 61 37
1 43 15 75 38 70 20 63 70 53 79
df1 <- df %>%
  select(X1:X5)%>%
  setNames(as.character(.[1,4:max(ncol(.))]))

> print(df1)
  13  8 NA NA NA
1 76 44 89 13  8
2 78 27 81 75 61
  X1 X2 X3 13  8
1 78 27 81 75 61
require(tidyverse)

#Using your dataset
df <- data.frame(replicate(10,sample(100,2,rep=TRUE)))

df %>% 
  set_names(c(names(df)[1:3], as.character(.[1,])[4:10])) %>% 
  rownames_to_column("index") %>% 
  filter(index != 1 ) %>% 
  select(-index)

  X1 X2 X3 16 56 51 11 21 61 37
1 43 15 75 38 70 20 63 70 53 79