programing

열 이름에 접두사 추가

css3 2023. 11. 6. 21:57

열 이름에 접두사 추가

다음 도움말 파일을 읽을 때 열 이름에 접두사를 추가할 수 있어야 합니다.

colnames(x, do.NULL = TRUE, prefix = "col")

다음 사항은 저에게 맞지 않습니다.내가 여기서 뭘 잘못하고 있는 거지?

m2 <- cbind(1,1:4)
colnames(m2, do.NULL = FALSE)
colnames(m2) <- c("x","Y")
colnames(m2) <- colnames(m2, prefix = "Sub_")
colnames(m2)

도움말 파일을 잘못 읽었습니다.다음은 논의 사항입니다.

do.NULL: 논리적으로. 만약에FALSE그리고 이름은NULL, 이름이 생성됩니다.

그리고 그 설명에서 을 주목합니다.이름이 더 이상 없습니다.NULL, 접두사를 사용하면 안 됩니다.

대신 다음과 같은 것을 사용합니다.

> m2 <- cbind(1,1:4)
> colnames(m2) <- c("x","Y")
> colnames(m2) <- paste("Sub", colnames(m2), sep = "_")
> m2
     Sub_x Sub_Y
[1,]     1     1
[2,]     1     2
[3,]     1     3
[4,]     1     4

추가하겠습니다.tidyverse모든 열 이름에 접미사와 접두사를 모두 추가할 수 있는 이 문제에 접근합니다.다음은 a에 접두사를 추가한 것입니다.dplyr피리를 부리다

dplyr 1.0.2 이상

library(dplyr)
df <- data.frame(x = c(1, 2), y = c(3, 4))

## Adding prefixes
df %>% rename_with( ~ paste0("a", .x))

## Adding suffixes
df %>% rename_with( ~ paste0(.x, "a"))

밑줄과 같은 구분자를 갖고 싶을 때는paste뿐만 아니라sep논쟁.


dplyr 1.0.2 업데이트 전

library(dplyr)
df <- data.frame(x = c(1, 2), y = c(3, 4))
df %>% rename_all( ~ paste0("a", .x))

접미사를 추가하는 것이 더 쉽습니다.

df %>% rename_all(paste0, "a")

업데이트된tidyverse메소드(포함)dplyr 1.0.2) 용도rename_with()처럼rename_all()함수가 대체되었습니다.

iris %>% rename_with( ~ paste("Sub", .x, sep = "_"))

stats::setNames기능은 이에 적합하게 작동하며, 실제로 대안보다 훨씬 빠릅니다.


iris.dt <- data.table::as.data.table(iris)

microbenchmark::microbenchmark(
  
  base = colnames(iris) <- paste("Sub", colnames(iris), sep = "_"),
  stats = setNames(iris, paste("Sub", colnames(iris), sep = "_")), 
  dplyr = dplyr::rename_with(iris, ~ paste("Sub", .x, sep = "_")),
  datatable = data.table::setnames(iris.dt, paste("Sub", names(iris.dt), sep = "_"))
  
)
#> Unit: microseconds
#>       expr     min       lq       mean   median      uq        max neval cld
#>       base  11.094  16.2140   21.62408  19.2010  23.681     65.707   100   a
#>      stats   8.107  13.8670   17.40435  16.6405  19.841     39.254   100   a
#>      dplyr 786.772 842.8785 5236.67222 877.0130 984.959 402378.407   100   a
#>  datatable  40.961  49.9200   84.06237  62.2935  73.600    834.560   100   a

repex 패키지(v0.3.0)에서 2020-10-21에 생성됨

언급URL : https://stackoverflow.com/questions/14872081/add-a-prefix-to-column-names