[英]Initialize a nested data frame in R
我有一個稱為ldt的嵌套數據表。 每個方向的最大尺寸是
ldt[[44]][7200,4]
意味着每個嵌套的data.table(DT)是7200行乘4列,並且有44個這樣的嵌套DT。
我想基於第一組創建第二組DT。
具體來說,我要執行命令
for (i in length(ldt)) {ldtSUM[[i]]<-ldt[[i]][, sum(V4), by="V1,V3"]}
如果成功,則應生成一個嵌套的維數組
ldtSUM[[44]][120,4]
但是這樣做會導致錯誤:
Error in ldtSUM[[i]] <- ldt[[i]][, sum(V4), by = "V1,V3"] : object 'ldtSUM' not found
大概是因為我從未初始化過它。
因此,為了避免這種情況,我嘗試了多種初始化技術,例如
ldtSUM=ldt[[1:44]][0,]
和其他許多語句,但它們均由於各種原因而失敗,例如我未指定多個空行,或者“遞歸索引在3級失敗”等。
因此,總而言之,我想做的是創建一個data.table,其中$ V4與$ V1,$ V3相加,但是由於索引和初始化問題,我似乎無法執行此操作。
非常感謝你!
根據agstudy的答案,正確的代碼是:
ldtSUM<-lapply(ldt,function(x)x[, sum(V4), by = "V1,V3"]
您有兩部分解決您的問題:第一部分已經通過以下方式解決:
ldtSUM<-lapply(ldt,function(x)x[, sum(V4), by = "V1,V3"]
第二部分是關於初始化的,可以通過以下方法解決:
ldtSUM <- list()
初始化之后,如果您運行原始代碼:
for (i in length(ldt)) {ldtSUM[[i]]<-ldt[[i]][, sum(V4), by="V1,V3"]}
應該也可以。
注意:對於您的問題,agstudy建議的解決方案是最好的。 但是初始化是一個通用技巧,可在各種情況下使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.