如何在 R 函数中使用子列表?

How can I work with sub-lists in a function in R?

我有一个包含列表和子列表的数据 table。

DT <- data.table (A=c(1,1,1,2,2,3,3,4,4,4,5), B=c(200,210,300,420,289,365,587,250,110,500,800), C=c(0.6,0.35,0.6,0.85,0.22,0.36,0.39,0.31,0.33,0.58,0.66))
DT
DT_Split <- split(DT, DT$A)
names(DT_Split) <- c(paste("FF", names(DT_Split), sep = ""))
list2env(DT_Split, .GlobalEnv)
lapply(DT_Split, function(x){
  x[, NewColumn := cumsum(c(TRUE, diff(B) < 0))]})
DT_Split2 <- lapply(DT_Split, function(x) split(x, x$NewColumn))
DT_Split2$FF1$`1`

如何向此子列表添加后缀,1 in FF1 in DT_Split2(最后一行)? 我如何在函数中处理这个子列表?

更新 我不想手动处理或添加后缀。我的意思是像这一行:

names(DT_Split) <- c(paste("FF", names(DT_Split), sep = "")) 
list2env(DT_Split, .GlobalEnv)

但对于子列表。

非常感谢, 米拉德

您已经在 names(DT_Split) <- 行中使用了它 如果您只想更改,您需要做的就是访问子列表 FF1 如果您想要更改所有内容,请使用第一行子列表使用 lapply:

# paste0 is the equivalent to paste(..., sep="") but faster
# also no need to enclose it in c() call
names(DT_Split2$FF1) <- paste0(names(DT_Split2$FF1) , "Suff")
lapply(DT_Split2, function(x) {names(x)<-paste0(names(x) , "Suff"); x})

要提取所有子列表的名称,可以轻松实现:

lapply(name.of.list, names)
#lapply(DT_Split2, names)