在父列表中获取子列表的名称

Get sublists' name within parent list

提问人:fijafija 提问时间:6/12/2023 最后编辑:zx8754fijafija 更新时间:6/12/2023 访问量:58

问:

我有以下列表:

Item1 <- data.frame(Col1 = rnorm(10000), Col2 = rnorm(10000), Col3 = rnorm(10000), Col4 = rnorm(10000))
Item2 <- data.frame(Col1 = rnorm(10000), Col2 = rnorm(10000), Col3 = rnorm(10000), Col4 = rnorm(10000))
Item3 <- data.frame(Col1 = rnorm(10000), Col2 = rnorm(10000), Col3 = rnorm(10000), Col4 = rnorm(10000))
Item4 <- data.frame(Col1 = rnorm(10000), Col2 = rnorm(10000), Col3 = rnorm(10000), Col4 = rnorm(10000))
Item5 <- data.frame(Col1 = rnorm(10000), Col2 = rnorm(10000), Col3 = rnorm(10000), Col4 = rnorm(10000))

dflist <- list(Item1, Item2, Item3, Item4, Item5)

和以下向量:

vec <- c("Item3", "Item4")

该列表中的每个项目都是一个 data.frame,其中包含存储在 4 列中的 10K 个观测值。

我首先要做的是,对于里面的每个data.frame,检查它的名字(在)中是否存在。接下来,如果是这样,则应用逐行逻辑:第一个负值之后的所有内容都应设置为 0。我的想法是使用 do.call/lapply/apply 的组合。我不能使用循环,执行时间是这里的优先事项。dflistdflistvec

现在,在任务的第二部分(编写一个要在每个元素中按行应用的函数)我将进行管理。我唯一的困难是,在“应用”一个函数检查每个项目是否在里面时,如何提取 data.frame 的名称。dflistvec

我脑海中的伪代码如下所示:

CheckPresence <- function(dataframe){
... (?) ...
}
Adjust <- function(row){
...
}
MakeAdjustments <- function(dflist, vec){

if(CheckPresence(dataframe) %in% vec){ #e.g. Item1, Item2 etc.
dataframe_adjusted <- apply(X=dataframe, MARGIN=1, FUN=Adjust)
}else{
dataframe_adjusted <- dataframe
}
}

然后

adjustedlist <- lapply(X=dflist, FUN= MakeAdjustments, vec)
R 数据帧 列表 提取 嵌套列表

评论

3赞 GKi 6/12/2023
问题是,您的 data.frames 在您的 .使用: 或 .dflistdflist <- mget(c("Item1", "Item2"))dflist <- list(Item1=Item1, Item2=Item2)
0赞 r2evans 6/12/2023
也可以将符号存储为名称(将符号存储为名称)用作 。(仅当您已经在使用 或 中的其他软件包时才有用。tibble::lstlst(Item1, Item2, ...)dplyrtidyverse
0赞 I_O 6/12/2023
setNames也可能有用。在您的案例中:或类似dflist <- setNames(dflist, paste0('Item', 1:5))
0赞 fijafija 6/13/2023
好的,但是在这种情况下,命名列表元素对我有什么好处?如何在 ?我还想保留CheckPresencedflist

答: 暂无答案