r - 将两个元素列表合并为一个具有相同元素但每个元素有两个变量的列表
问题描述
我有两个 48 个元素的列表。列表中的每个元素都有一个变量(下面的 DiffINT 或 DiffEXT),具有不同数量的观察值。两个列表中所有元素的名称都相同。
我想做的是根据元素名称合并两个元素列表,最后每个元素有两个变量。
额外问题:我有两个 48 个元素的列表,两个列表都有相同的元素。一个列表有一个变量,其中有一个观察值,另一个列表是每个元素有六个变量,观察值不同。我可以以某种方式合并这些以完成与上述相同的操作吗?
我已经查看了其他问题并尝试了 append() 和 cbind() 以及其他功能,但它们都没有完成我想要的。我正在寻找的示例如下。
> str(DiffsMerged)
List of 48
$ Element1:List of 2
..$ DiffINT : num 1 0.642 0.27 -0.102 -0.123 ...
..$ DiffEXT : num 1 0.1397 -0.1045 -0.0751 -0.1414 ...
$ Element 2:List of 2
..$ DiffINT : num 1 0.5842 0.3453 0.158 -0.0259 ...
..$ DiffEXT : num 1 -0.0312 -0.0321 -0.033 -0.0339 ...
$ Element 3:List of 2
..$ DiffINT : num 1 0.908 0.816 0.724 0.632 ...
..$ DiffEXT : num 1 0.584 0.21 -0.163 -0.406
提前谢谢了。
编辑添加:每当我想查看单个列表(DiffINT 和 DiffEXT)时,都会收到以下错误。想法?
> View(DiffEXT)
Error in if (more || nchar(output) > 80) { :
missing value where TRUE/FALSE needed
解决方案
lapply
您可以通过循环获得简单的“合并” :
all_names <- union(names(DiffINT), names(DiffEXT))
DiffsMerged <- lapply(
X = all_names,
FUN = function(name) {
list(DiffINT[[name]], DiffEXT[[name]])
}
)
names(DiffsMerged) <- all_names
str(DiffsMerged)
# List of 3
# $ Element1:List of 2
# ..$ : num [1:5] 1 0.642 0.27 -0.102 -0.123
# ..$ : num [1:5] 1 0.1397 -0.1045 -0.0751 -0.1414
# $ Element2:List of 2
# ..$ : num [1:5] 1 0.1397 -0.1045 -0.0751 -0.1414
# ..$ : num [1:5] 1 -0.0312 -0.0321 -0.033 -0.0339
# $ Element3:List of 2
# ..$ : num [1:5] 1 0.908 0.816 0.724 0.632
# ..$ : num [1:5] 1 0.584 0.21 -0.163 -0.406
我不知道您打算将这些数据用于什么目的,但它有助于保持整洁。仅当两个列表具有相同名称且所有元素具有相同长度时才执行此操作。
int_df <- data.frame(DiffINT)
int_df[["source"]] <- "int"
ext_df <- data.frame(DiffEXT)
ext_df[["source"]] <- "ext"
merged_df <- rbind(int_df, ext_df)
merged_df
# Element1 Element2 Element3 source
# 1 1.0000 1.0000 1.000 int
# 2 0.6420 0.1397 0.908 int
# 3 0.2700 -0.1045 0.816 int
# 4 -0.1020 -0.0751 0.724 int
# 5 -0.1230 -0.1414 0.632 int
# 6 1.0000 1.0000 1.000 ext
# 7 0.1397 -0.0312 0.584 ext
# 8 -0.1045 -0.0321 0.210 ext
# 9 -0.0751 -0.0330 -0.163 ext
# 10 -0.1414 -0.0339 -0.406 ext
推荐阅读
- r - 如何制作对列中的值进行计数的过滤器
- reactjs - 即使使用 enableReinitialize,Formik FieldArray 也不会重新渲染更新的值
- python - 如何在 Python Flask 应用程序的服务员服务器上进行反向代理
- html - sematic ui react ,是否可以将标签分成两部分?
- mysql - 使用 Navicat 聚合年初至今的收入
- javascript - Javascript 聊天室:如何确定我向谁发送消息?
- react-native - 我可以避免 TextInput 在其父状态更改时失去焦点吗?
- r - 将两个向量合并到数据框中的函数,保持其向量名称
- python - 将文本文件中的列拆分为python中的列表
- go - 提取特定域的所有 TXT 记录