Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:data.table用多个lappy语句构建函数_R_Data.table - Fatal编程技术网

R:data.table用多个lappy语句构建函数

R:data.table用多个lappy语句构建函数,r,data.table,R,Data.table,我目前正在使用data.table在R中工作,并试图在一长串数据表上完成一系列数据处理步骤。我已经找到了一些单独的lappy和步骤,但我不确定如何将这些步骤链接到一个函数中,以便我的数据表列表通过每个步骤,然后在最后使用rbindlist组合出来 以下是我正在努力完成的数据处理步骤: 1将所有数据表子集为一个变量-名称 2将包含这一变量的每个数据表从长转换为宽 3添加一个变量数据集,用于保存其中每个表的名称 4使用rbindlist将数据表合并成一个大数据表 以下是我到目前为止掌握的代码片段,但

我目前正在使用data.table在R中工作,并试图在一长串数据表上完成一系列数据处理步骤。我已经找到了一些单独的lappy和步骤,但我不确定如何将这些步骤链接到一个函数中,以便我的数据表列表通过每个步骤,然后在最后使用rbindlist组合出来

以下是我正在努力完成的数据处理步骤: 1将所有数据表子集为一个变量-名称 2将包含这一变量的每个数据表从长转换为宽 3添加一个变量数据集,用于保存其中每个表的名称 4使用rbindlist将数据表合并成一个大数据表

以下是我到目前为止掌握的代码片段,但我不确定如何将它们组合成一个函数,以便将一个列表从一个步骤传递到下一个步骤:

    data_tables<-c("symp", "care", "meds")
    #1)subset out variable "name" from each data table
    one<-lapply(mget(data_tables),function(x)x[, .("name")])
    #2)convert from long to wide format - I'm unsure how to send the previous list "one" from the    
    last lapply to the next step
    dt<-dt[, as.list(table(name))]
    #3)add variable "data_set" containing name of each data set in list
    one_1 <- Map(function(x, nm) as.data.table(x)[, data_set := nm], mget(one), one)
    #4)combine list of data tables together using rbindlist
    combined<-rbindlist(one_1, use.names=TRUE, fill=TRUE, idcol=NULL)

我的建议是:

创建一个函数,该函数为您完成以下步骤:

complete_work <- function(dt, nm){

step1 <- dt[, .("name")]
dt <- dt[, as.list(table(name))]
dt[, data_set := nm], step1 , step1)

}
如果您有一个输入和输出的示例,那么可以更容易地帮助您构建您正在寻找的答案

lapply(list(symp, care, meds),  complete_work)