Объедините символьные векторы и используйте минус этого вектора, чтобы поместить строки или столбцы в ноль - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть фрейм данных и два символьных вектора, которые имеют определенные имена столбцов этого фрейма, скажем:

    dat <- read.table(
  text = "A   B   C   D   E   F   G   H   I   J
  A   0   1   1   1   0   1   0   1   1   0
  B   1   0   0   0   1   0   1   0   0   1
  C   0   0   0   1   1   0   0   0   0   0
  D   1   0   1   0   0   1   0   1   0   1
  E   0   1   0   1   0   1   1   0   1   0
  F   0   0   1   0   0   0   1   0   0   0
  G   0   1   0   1   0   0   0   0   0   0
  H   1   0   1   0   0   1   0   0   0   1
  I   0   1   0   1   1   0   1   0   0   0
  J   1   0   1   0   0   1   0   1   0   0",
  header = TRUE
)

charvec1 <- c("A","C","E")
charvec2 <- c("I","J","D")

Я хотел бы соединить два символьных вектора и поместить строки и столбцы фрейма данныхкоторых нет в этом новом векторе к нулю.

Я пытался сделать следующее без особого успеха:

# put the two character vectors together
charvec3 <- c(t(outer(charvec1 , charvec2 , paste)))

# use the character vectors to put the column names which are not mentioned to zero
dat[-charvec3,] <- 0 # Row will be set to zero
dat[,-charvec3] <- 0 # Column will be set to zero, 

Может кто-нибудь объяснить мне, как это сделать правильно?

1 Ответ

0 голосов
/ 11 декабря 2018
charvec <- c(charvec1, charvec2)
dat[, !colnames(dat) %in% charvec] <- 0
dat[!rownames(dat) %in% charvec, ] <- 0
...