首页 > 解决方案 > 创建一个连续字母列表,如 R 中 excel 的标题

问题描述

如何在R中创建一个顺序字母列表,如excel的列标题?我的 excel 文件中有 559 列,所以我想创建一个由连续字母组成的向量,例如“A、B、... Z、AA、AB、... AZ、... BA、BB、... " 等等。这样我就可以创建自己的数据字典,所以想“映射”到 excel 的列标题。

标签: rdplyr

解决方案


如果您对基本 R 解决方案感兴趣,可以试试这个:

all <- expand.grid(LETTERS, LETTERS)
all <- all[order(all$Var1,all$Var2),]
out <- c(LETTERS, do.call('paste0',all))

out 将返回 702 个值作为向量,我相信您希望将它们子集化到 559,因此您可以编写:out[1:559]。

要重命名您可以使用的列,其中 data_frame 是您的数据框名称

names(data_frame) <- out[1:559]

不过,一个重要的注意事项是,我在这里假设您只想要包含两个字符的列,不超过这个。

使用 gtools 的通用方法

 comb <- lapply(1:3, function(x)gtools::permutations(26,x, LETTERS, repeats.allowed = TRUE))
 ## Using 3 for excel 3 combinations of alphabets
 unlist(lapply(comb, function(x)do.call('paste0', data.frame(x,stringsAsFactors = FALSE))))

一些观察:

> out[1:50]
 [1] "A"  "B"  "C"  "D"  "E"  "F"  "G"  "H"  "I"  "J"  "K" 
[12] "L"  "M"  "N"  "O"  "P"  "Q"  "R"  "S"  "T"  "U"  "V" 
[23] "W"  "X"  "Y"  "Z"  "AA" "AB" "AC" "AD" "AE" "AF" "AG"
[34] "AH" "AI" "AJ" "AK" "AL" "AM" "AN" "AO" "AP" "AQ" "AR"
[45] "AS" "AT" "AU" "AV" "AW" "AX"

推荐阅读