r - 将列表与 lapply() 函数组合时出现问题
问题描述
我正在努力寻找我的 R 代码中的错误。我有一个名为 lst 的列表,例如:
lst:
A double[1 x 896] 1 2 3 4...
B double[1 x 1025] 0 4 7 9...
C double[1 x 1335] 1 2 3 4...
我正在尝试将这些元素两两合并,它们具有相同的列名。我正在使用代码(在将多个数据框与重合列合并中建议)。
do.call(rbind, lapply(c(lst[j],lst[i]), subset, select = Reduce(intersect, lapply(c(lst[j],lst[i]), colnames))))
当我结合 A 和 B 时,一切正常:
do.call(rbind, lapply(c(lst[1],lst[2]), subset, select = Reduce(intersect, lapply(c(lst[1],lst[2]), colnames))))
但是当我尝试结合 A 和 C
do.call(rbind, lapply(c(lst[1],lst[3]), subset, select = Reduce(intersect, lapply(c(lst[1],lst[3]), colnames))))
我得到错误
Error in x[subset & !is.na(subset), vars, drop = drop] : subscript out of bounds
问题来自:
lapply(c(lst[1],lst[3]), subset, select = Reduce(intersect, lapply(c(lst[1],lst[3]), colnames)))
有人知道发生了什么吗?
解决方案
我刚刚解决了这个问题。写作
aux <- c(lst[j],lst[i])
do.call(rbind, lapply(aux, subset, select = Reduce(intersect, lapply(aux, colnames))))
代替
do.call(rbind, lapply(c(lst[j],lst[i]), subset, select = Reduce(intersect, lapply(c(lst[j],lst[i]), colnames))))
事实上,我不知道有什么区别,但第一个有效。如果有人有一些见解,请告诉我。
推荐阅读
- flask - 为表单生成可变数量的字段
- ruby-on-rails - 如何在 Ruby 中使用 optimist?
- spring-boot - 用于保存来自外部 API 的数据的 Spring Boot 注册表
- mongodb - mongodb 字母排序翻转
- python - 将列从多索引堆叠到单索引
- spring-data-jpa - 如何对多个实体使用单个 jpa 规范
- javascript - jquery - 无法在 keyup 事件上捕获`@`(以速率符号)
- rabbitmq - Windows 10 上的 RabbitMQ - 无法连接到 epmd:地址(无法连接到主机/端口)
- apache - 如何从 apache conf 中的响应标头中删除“Content-Type: text/html;charset=UTF-8”
- permissions - Google DLP 用户的访问被拒绝