根据名称将列表中的元素替换为另一个列表中的元素

标签 r list dataframe lapply

我正在尝试使用命名索引来替换列表中的某些元素。

我有三个列表:

  • super 组
  • 子集
  • 子集名称

我的目标是将 Superset 中的旧元素替换为 Subset 中的相应元素,其中 Name(Subset) == Name(Superset)。

示例代码(为了正确性而编辑):

# Setting things up
Superset <- list(1, 2, 3, 4)
names(Superset) <- c("a", "b", "c", "d")

Subset <- list(5, 6)
names(Subset) <- c("b", "c") # or any names from Superset

SubsetNames <- as.list(names(Subset))

我尝试过这样的事情:

lapply(SubsetNames, FUN=function(x) Superset[[x]] <- Subset[[x]])

还有:

Superset[SubsetNames] <- Subset

我什至尝试构建一个带有计数器的 for 循环,但这在我的场景中不是一个可行的解决方案。

实际上,Superset 是一个数据帧列表,每个数据帧在 117 列中包含近 90k 个数据点。 其中一些数据框需要进行一些调整。我的代码可以成功提取需要调整的列表并调整它们......现在我只需要把它们放回去。

非常感谢您的帮助!谢谢!

最佳答案

我们可以使用“子集”的名称来对“超集”进行子集化,并将其分配给“子集”的值

Superset[names(Subset)] <- Subset
Superset
#$a
#[1] 1

#$b
#[1] 5

#$c
#[1] 6

#$d
#[1] 4

列表创建似乎有问题。它将是 as.list

Superset <- as.list(1:4)

它将返回 length 4 的 list,而不是使用 list(1:4) 返回 length 1 >

关于根据名称将列表中的元素替换为另一个列表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59671348/

相关文章:

r - 使用 `readxl` 包对彩色单元格进行分类

python - 排序列表时嵌套的 lambda 语句

python - 选择 3 个 Pandas 列中 3 个可能值中的最低值

python - 如何正确使用带有apply功能的pandas groupby来解决副作用? (第一组申请两次)

r - grepl 排除模式之前的一组单词

r - 使用管道时如何在R中获取函数输入名称

R-我应该在哪里放置RDA文件-/R,/data,/inst/extdata?

python - 如何使用 matplotlib.animation 从动态增长的列表中连续流式传输数据点以进行实时绘图?

python - 从列表中删除重复项并删除另一个列表中相同索引处的元素

python - Pandas Dataframe 选择具有最小基数的组