R的应用函数中的参考x列

时间:2018-05-01 13:11:04

标签: r

我有这样的df:

a <- c(4,5,3,5,1)
b <- c(8,9,7,3,5)
c <- c(6,7,5,4,3)
df <- data.frame(rbind(a,b,c))

我想要一个新的df,df2,它包含行a和b中每个单元格中的值与各自列中行c中的值之间的差异。

df2看起来像这样:

a <- c(-2,-2,-2,1,-2)
b <- c(2,2,2,-1,2)
df2 <- data.frame(rbind(a,b))

这就是我被卡住的地方:

df2 <- data.frame(apply(df,c(1,2),function(x) x - df[nrow(df),the col index of x]))

如何引用x的列索引?是否有类似JavaScript this的内容?

1 个答案:

答案 0 :(得分:0)

我们可以通过复制第3行来使这些长度相等,然后再减去前两行

out <- df[c("a", "b"),] - df["c",][col(df[c("a", "b"),])]    
identical(df2, out)
#[1] TRUE

或明确使用rep

df[c("a", "b"),] - rep(unlist(df["c",]), each = 2)