用于将自定义数字和字母列表导出到Excel中的R脚本

时间:2018-01-22 21:17:04

标签: r r-xlsx

为了帮助我做一些常规的标签制作和打印,我希望编写一个脚本,允许我输入一系列序列号(有些带字符串标识符),我可以使用特定格式导出Excel中。例如,如果我输入范围' 1:16',我正在Excel中查找输出:

enter image description here

对于每个唯一的序号(即1到16),前五行必须标有' U",接下来的三行标有' F'最后两行必须是单独的数字。最终导出的矩阵将是n列x 21行,其中n将根据我输入的数字范围而变化。

我的主要问题是写入Excel。我无法找到如何自定义此输出并写入特定的行和列,如上例所示。我受限于' openxlsx'因为我在企业安全工作站上工作。以下是我到目前为止的情况:

Unfiltered <- rep (1 : 16, each = 5)
UnfilteredLabel <- paste (Unfiltered, "U")
UnfilteredLabel

Filtered <- rep (1 : 16, each = 3)
FilteredLabel <- paste (Filtered, "F")
FilteredLabel

Number <- rep (1 : 16, each = 2)
NoLabel <- paste (Number, "")
NoLabel

install.packages("openxlsx")
library(openxlsx)

write.xlsx(UnfilteredLabel, 'test.xlsx', append = TRUE)
write.xlsx(FilteredLabel, 'test.xlsx', append = TRUE)
write.xlsx(NoLabel, 'test.xlsx', append = TRUE)

非常感谢您提供的任何帮助,提前谢谢!

1 个答案:

答案 0 :(得分:0)

不是最干净的代码。试一试:

aa<-data.frame(matrix(c(1:16), byrow=F, ncol=4))
mm<-lapply(aa,function(x){
  ac<-mapply(rep,list(x), list(5,3,2))
  xy<-mapply(paste,ac,list("U","F",""), sep="")  
  xy<-matrix(unlist(xy), byrow=T,ncol=4)
})
fst<-do.call("rbind", list(mm[[1]],"",mm[[2]]))
snd<-do.call("rbind", list(mm[[3]],"",mm[[4]]))
mm<-do.call("cbind", list(fst,"",snd))
openxlsx::write.xlsx(mm, 'test.xlsx', append = TRUE)