R purrr map2 для изменения имени столбца - проблема с интервалом в имени столбца - PullRequest
0 голосов
/ 30 октября 2018

Я работаю с некоторыми данными из внешних источников, которые поставляются с пробелом в одном из имен переменных («Псевдоидентификатор»). Я пытаюсь использовать 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 голосов
/ 30 октября 2018

Вы можете использовать map и set_names из purrr здесь.

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
)))
...