我尝试在某个列上执行基本操作(比如说,减去1),由另一列的值引用(让我们说第一列)。例如:对于给定的行,第一列中的值等于5.然后我想从同一行第5列中减去1。
数据看起来像
tmp <- data.frame(replicate(5,sample(2:5,5,rep=TRUE)))
当然,我可以通过多行代码实现这一点,每次选择总行的子样本,满足某个条件,但我确信这个操作可以更干净,更动态地执行。
其他问题:是否有一种简单的方法可以以相同的方式引用列名,而不是索引。例如列名&#34; S5&#34;?最简单的方法是通过名称(tmp),然后匹配列的名称并使用名称索引,或者您能想到更简单的方法吗?
有什么建议吗?
答案 0 :(得分:2)
因此元素的列索引位于行的第一列:
for (i in 1:nrow(tmp)) tmp[i, tmp[i,1]] <- tmp[i, tmp[i,1]] - 1
如果在第一列中列的名称是字符(而不是因子!),它也可以工作:
tmp <- data.frame(cInd=c("A", "B", "C"), A=1:3, B=11:13, C=21:23,
stringsAsFactors = FALSE)
for (i in 1:nrow(tmp)) tmp[i, tmp[i,1]] <- tmp[i, tmp[i,1]] - 1