# [R] Numeric Column Labels in Excel Function

arun smartpink111 at yahoo.com
Mon Jan 27 23:15:32 CET 2014

Sorry, this should work

fun1 <- function(n){
vec1 <- LETTERS
if(n <=26){
res <- vec1[seq_len(n)]
}
else if(n>26 & n <=702){
res <-  c(LETTERS,apply(expand.grid(vec1,vec1)[,2:1],1,paste,collapse=""))[1:n]
}
else if(n >702 & n <=18278){
res <- c(LETTERS,apply(expand.grid(vec1,vec1)[,2:1],1,paste,collapse=""),apply(expand.grid(vec1,vec1,vec1)[,3:1],1,paste,collapse=""))[1:n]
}
else {
res <- NA
}
res
}
fun1(0)
character(0)
> fun1(8)
[1] "A" "B" "C" "D" "E" "F" "G" "H"
> fun1(40)
[1] "A"  "B"  "C"  "D"  "E"  "F"  "G"  "H"  "I"  "J"  "K"  "L"  "M"  "N"  "O"
[16] "P"  "Q"  "R"  "S"  "T"  "U"  "V"  "W"  "X"  "Y"  "Z"  "AA" "AB" "AC" "AD"
[31] "AE" "AF" "AG" "AH" "AI" "AJ" "AK" "AL" "AM" "AN"
> fun1(18279)
[1] NA
A.K.

On Monday, January 27, 2014 5:11 PM, Dustin Fife <fife.dustin at gmail.com> wrote:
There seems to be a problem with that function: object 'vec1' not found.

On Mon, Jan 27, 2014 at 4:05 PM, arun <smartpink111 at yahoo.com> wrote:
>
>
> HI,
>
> May be you can try:
>
> fun1 <- function(n){
>  if(n <=26){
>  res <- LETTERS[seq_len(n)]
>  }
>  else if(n>26 & n <=702){
> res <-  c(LETTERS,apply(expand.grid(vec1,vec1)[,2:1],1,paste,collapse=""))[1:n]
> }
> else if(n >702 & n <=18278){
> res <- c(LETTERS,apply(expand.grid(vec1,vec1)[,2:1],1,paste,collapse=""),apply(expand.grid(vec1,vec1,vec1)[,3:1],1,paste,collapse=""))[1:n]
> }
> else {
> NA
> }
> res
> }
> fun1(0)
> #character(0)
>  fun1(2)
> #[1] "A" "B"
>
> fun1(28)
> A.K.
>
>
>
>
> On Monday, January 27, 2014 4:41 PM, Dustin Fife <fife.dustin at gmail.com> wrote:
> Hi all,
>
> I frequently get requests to do data analysis where the person
> references an excel column. e.g., "I want to analyze [insert complex
> variable name], located at column AAQ in Excel."  I've been doing is
> gsub and inserting a part of the string for the complex variable name,
> then going from there. But, I was trying to make function that returns
> the following vector:
>
> excelVector = A, B, C, D,...AA, AB, AC...ZA, ZB, ZC,...AAA, AAB, AAC, etc.
>
> In other words, the argument would have one argument (n, or the number
> of columns), then it would return a list like that shown above. Then,
> all I would have to do is
>
> column.of.interest = which(excelVector=="AAQ")
>
> But I'm a bit stumped. The first part is easy:
>
> LETTERS[1:26]
>
> The next would probably use expand.grid, but all my potential
> solutions are pretty clunky.
>
> Any ideas?
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> and provide commented, minimal, self-contained, reproducible code.
>