提问人:fijafija 提问时间:6/12/2023 最后编辑:zx8754fijafija 更新时间:6/12/2023 访问量:58
在父列表中获取子列表的名称
Get sublists' name within parent list
问:
我有以下列表:
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 的组合。我不能使用循环,执行时间是这里的优先事项。dflist
dflist
vec
现在,在任务的第二部分(编写一个要在每个元素中按行应用的函数)我将进行管理。我唯一的困难是,在“应用”一个函数检查每个项目是否在里面时,如何提取 data.frame 的名称。dflist
vec
我脑海中的伪代码如下所示:
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)
答: 暂无答案
上一个:根据数据帧重命名列表中的值
评论
dflist
dflist <- mget(c("Item1", "Item2"))
dflist <- list(Item1=Item1, Item2=Item2)
tibble::lst
lst(Item1, Item2, ...)
dplyr
tidyverse
setNames
也可能有用。在您的案例中:或类似dflist <- setNames(dflist, paste0('Item', 1:5))
CheckPresence
dflist