如何在 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)
我有一个包含列表和子列表的数据 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)