Я хотел бы сделать (более или менее) следующее
dplyr::mutate_if(tmp, is.numeric, function(x) x-df[3,])
, по сути это должно вычитать при каждом x
значение из df
.У меня проблема в том, что он должен использовать только соответствующий номер столбца, то есть tmp[x,y] - df[3,y]
.Однако происходит то, что он проходит по вектору df[3,]
для каждого x
, независимо от положения столбца.
Есть ли способ заставить эту работу работать с mutate_if
путем индексации столбца, чтобыть моим предпочтительным решением?
вот пример: tmp это:
tmp <- structure(list(x = c(1, 1, 1, 1),
y = c(2, 2, 2, 2)),
row.names = c(NA, -4L), class = c("tbl_df", "tbl", "data.frame"))
df (фактически матрица):
df <- structure(c(1L, 2L, 3L, 2L, 3L, 4L),
.Dim = 3:2, .Dimnames = list(NULL, c("x", "y")))
теперь, когда я применяю mutateон возвращает:
structure(list(x = c(-2, -3, -2, -3),
y = c(-1, -2, -1, -2)),
class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -4L))
но я хочу, чтобы оно было:
structure(list(x = c(-2, -2, -2, -2),
y = c(-2, -2, -2, -2)),
class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -4L))
Надеюсь, это прояснит ситуацию