【发布时间】:2016-05-25 13:01:29
【问题描述】:
我正在尝试对某个列进行基本操作(例如减 1),由另一列的值(例如第一列)引用。例如:对于给定的行,第一列中的值等于 5。然后我想从同一行,第 5 列中减去 1。
数据看起来像
tmp <- data.frame(replicate(5,sample(2:5,5,rep=TRUE)))
当然,我可以通过多行代码来实现这一点,每次选择总行的子样本,满足一定条件,但我相信这个操作可以更干净和动态地执行。
附加问题:有没有一种简单的方法以相同的方式引用列名,而不是索引。例如列名“S5”?最简单的方法是通过names(tmp),然后匹配列名并使用names的索引,或者你能想到更简单的方法吗?
有什么建议吗?
【问题讨论】:
-
for (i in 1:nrow(tmp)) tmp[i, tmp[i,1]] <- tmp[i, tmp[i,1]] - 1? -
不应该是
for (i in 1:nrow(tmp)) tmp[i, tmp[i,1]] <- tmp[i, tmp[i,5]] - 1吗? -
感谢您的 cmets!你完全正确@jogo。快速提问:有没有一种简单的方法可以以相同的方式引用列名,而不是索引。例如列名“S5”?最简单的方法是通过
names(tmp),然后匹配列的名称并使用名称的索引,或者你能想到更简单的方法吗?