创建数据表,让我们说我有一个data.table
使用循环
DT=data.table(name = sample(letters[1:25],30,replace=T), value =rnorm(3000))
我想分裂DT
的名称,并创建新的DTS,如姓名DT_a
,对应的名称值DT_b
。那我该怎么办呢?
创建数据表,让我们说我有一个data.table
使用循环
DT=data.table(name = sample(letters[1:25],30,replace=T), value =rnorm(3000))
我想分裂DT
的名称,并创建新的DTS,如姓名DT_a
,对应的名称值DT_b
。那我该怎么办呢?
试试这个:
DTs = split(DT, DT$name)
lapply(names(DTs), function(x) assign(paste0('DT_',x), DTs[[x]], envir=.GlobalEnv))
我们可以使用list2env
lst <-split(DT, DT$name)
list2env(setNames(lst, paste0("DT_", names(lst))), envir = .GlobalEnv)
不过,建议保持在一个list
,而不是在全球环境中创建多个数据集。但是,如果这只是为了了解创建对象的可能性,则可以使用list2env
。
Thx,也可以工作 – VincentLin
Downvoter,我刚刚修改了一些建议如果你想改变downvote,欢迎你。 – akrun
Thx的工作! – VincentLin
我有一个问题,为什么要添加.globalenv?我试图删除它,并返回了错误的结果 – VincentLin
没有它,分配只发生在函数“内部”。同样的原因,'f = function(){x = 5}; f()'不能创建一个变量'x' – sirallen