如何在R中自动化数据框命名?

Wal*_*cio 1 r function subset batch-processing

假设我有以下数据框:

x <- data.frame(let = sample(LETTERS, 100, replace = T),
                num = sample(1:10, 100, replace = T))
Run Code Online (Sandbox Code Playgroud)

我想创建几个子集,x其中每个新数据帧的级别为x$let.到目前为止,我已经提出了这个简单的功能:

ss <- function(letra){
  return(subset(x, let == letra))
}
Run Code Online (Sandbox Code Playgroud)

这是非常简陋的,并没有按照我的意愿进行命名.我的问题是:我如何自动执行以下程序?

a <- ss('A')
b <- ss('B')
c <- ss('C')
...
z <- ss('Z')
Run Code Online (Sandbox Code Playgroud)

jor*_*ran 5

详细说明一下.

xs <- split(x, x$let)
Run Code Online (Sandbox Code Playgroud)

现在我们有一个xs原始数据框的每个子集的列表.每个列表组件的名称与选择的因子级别相匹配:

 xs[['D']]
   let num
8    D   8
14   D   1
16   D   9
54   D   5
60   D   6
64   D   8
74   D   8
Run Code Online (Sandbox Code Playgroud)

大多数人使用xlsxXLConnect从R编写Excel文件.我碰巧使用XLConnect,但解决方案非常相似.

现在我们可以简单地这样做:

require(XLConnect)
file_name <- paste0("file",LETTERS,".xlsx")

for (i in seq_len(length(xs))){
    wb <- loadWorkbook(file_name[i],create = TRUE)
    createSheet(wb,"Sheet1")
    writeWorksheet(wb,data = xs[[i]],sheet = 1)
    saveWorkbook(wb)
}
Run Code Online (Sandbox Code Playgroud)

我已经在一个for循环中完成了这个,因此它更容易阅读和理解,但显然这也可以被推入一个lapplymapply类型的解决方案.