R purrr map2更改列名-列名中的空格问题

时间:2018-10-30 11:21:01

标签: r rename purrr

我正在处理来自外部源的一些数据,这些数据的变量名之一(“伪ID”)带有空格。我正在尝试使用purrr :: map在所有数据集中更改此变量名称,但是R似乎在识别此变量时遇到问题。我不想一直一一更改变量名...我想知道是否有人可以找到解决方案?

    library(tidyverse)

    # Mock data:
    set.seed(1)
    sampledata<- data.frame(
         ID = sample(1:2), 
         name = sample(letters, 2, replace = TRUE))
    colnames(sampledata)[1] <- "Pseudo ID"

    # List of mock data:
    datalist <- list(sampledata, sampledata)

    # Set name in each dataset in the list using map
    map(datalist, set_names, nm="PatientID") # BUT HOW CAN I RENAME A SPECIFIC COLUMN - 'Pseudo ID'

1 个答案:

答案 0 :(得分:1)

您可以在map中使用set_namespurrr

set.seed(1)
sampledata<- data.frame(ID = sample(1:2), name = sample(letters, 2, replace = TRUE))
colnames(sampledata)[1] <- "Pseudo ID"
datalist <- list(sampledata, sampledata)

library(purrr)
map(datalist, ~ set_names(.x, nm = replace(
  names(.x), names(.x) == "Pseudo ID", "PatientID"
)))
#[[1]]
#  PatientID name
#1         1    o
#2         2    x

#[[2]]
#  PatientID name
#1         1    o
#2         2    x

如果要分配其他名称,请使用map2

new_id_names <- c("PatientID_1", "PatientID_2")
map2(.x = datalist, .y = new_id_names, ~ set_names(.x, nm = replace(
  names(.x), names(.x) == "Pseudo ID", .y
)))