r - 在 R 中复制 Excel =INDEX() 函数
问题描述
首先,我还不太了解 R 的工作原理。我知道如何在 Excel 中轻松解决这个问题,但想知道 R 中的等效解决方法。
在 R 中,我有一个具有以下结构的数据框:
Type Type1 Type2 Type3 Type4 Type5
1 3 -9.697640 21.0876111 21.201925 20.306722 18.431434
2 4 -9.697640 21.0876111 21.201925 20.306722 18.431434
3 5 -9.697640 21.0876111 21.201925 20.306722 18.431434
4 1 -9.697640 21.0876111 21.201925 20.306722 18.431434
5 2 -9.697640 21.0876111 21.201925 20.306722 18.431434
我的目标只是添加最后一列,用于Type
确定从其他 5 列中的哪一列中提取值。因此对于第 1 行,Type3
将选择 under 的值,而第 2 行将选择 from 的值Type4
。
要在 Excel 中执行此操作,我可以简单地使用=INDEX(B1:F1,A1)
. 我在 R 中使用循环之前已经这样做了,但希望能找到更有效的方法。
解决方案
apply
没有循环或s的解决方案
df$newcol <- df[cbind(seq(nrow(df)), 1 + df$Type)]
df
# Type Type1 Type2 Type3 Type4 Type5 newcol
# 1 3 -9.69764 21.08761 21.20192 20.30672 18.43143 21.20192
# 2 4 -9.69764 21.08761 21.20192 20.30672 18.43143 20.30672
# 3 5 -9.69764 21.08761 21.20192 20.30672 18.43143 18.43143
# 4 1 -9.69764 21.08761 21.20192 20.30672 18.43143 -9.69764
# 5 2 -9.69764 21.08761 21.20192 20.30672 18.43143 21.08761
括号内的对象告诉 R 为每一行选择哪一行(左)和哪一列(右)newcol
cbind(seq(nrow(df)), 1 + df$Type)
# [,1] [,2]
# [1,] 1 4
# [2,] 2 5
# [3,] 3 6
# [4,] 4 2
# [5,] 5 3
推荐阅读
- google-apps-script - 在 Google 表格中,是否可以将活动单元格的内容显示到另一个单元格?
- android - android studio Arctic Fox 2021.3.1 在gradle bar 中不显示#signing 报告| #SHA1 未显示问题已解决
- javascript - 无法将单击事件添加到在创建对象之前未创建的按钮
- .net - .net 5 在启动中将 AutoSaveChanges 设置为 false
- github - 如何在 GutHub 中分配来自不同团队的不同数量的 Pull Request 审阅者
- algorithm - 在 O(m) 时间内使用非邻接表检查图的连通性
- apache-kafka-streams - Kafka Streams 转换方法和流时间戳
- go - ERC-20 代币转移问题:执行恢复:ERC20:从零地址转移
- python - super() 的返回类的不可见属性(继承)
- python - 如何只初始化其中一个对象