ссылка на столбец x в функции применения R - PullRequest
0 голосов
/ 01 мая 2018

У меня есть 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 голосов
/ 01 мая 2018

Мы можем легко это сделать, реплицировав 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...