Проблема с заменой строк в подмножестве R столбцов

#r

Вопрос:

Я пытался прочесть архивы, чтобы найти решение, но безуспешно. Я хочу заменить строку («_» на » «) в подмножестве столбцов в R:

 January_2019= c(4, 5)

February_2019= c(1,2)

OtherVariable = c(3,5)

dateColumns <- c("January_2019",
                 "February_2019")

df <- data.frame(January_2019, February_2019, OtherVariable)

colnames(df[dateColumns]) <- gsub("_", " ", colnames(df[dateColumns]))
 

Я не могу понять, почему это не работает. Заранее спасибо.

Ответ №1:

В текущей версии кода OP мы можем использовать match для поиска индекса ‘dateColumns’ для подмножества. Хотя gsub код работает для целых столбцов, предполагается, что вопрос заключается в том, как использовать gsub подмножество столбцов

 i1 <- match(dateColumns, names(df))
names(df)[i1] <- gsub("_", " ", names(df)[i1])
names(df)
#[1] "January 2019"  "February 2019" "OtherVariable"
 

Или в tidyverse

 library(dplyr)
library(stringr)
df <- df %>%
        rename_with(~ str_replace_all(., '_', ' '), all_of(dateColumns))
 

Ответ №2:

Самое простое решение на самом деле таково:

 names(df) <- gsub("_", " ", names(df))
 

Результат:

 df
  January 2019 February 2019 OtherVariable
1            4             1             3
2            5             2             5
 

Комментарии:

1. Почему я не могу использовать имена(df) с подмножеством столбцов и заставить его работать? Например, что делать, если я хочу заменить подчеркивание только в определенных столбцах?