функция возвращает связанные столбцы с удаленным соответствующим столбцом - PullRequest
0 голосов
/ 26 декабря 2018

Это мой код:

record <- function(input, string){ 
filter(input, input$race == string |
          input$flag == string)

}

Пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Вы можете попробовать which.Используя данные из @RuiBarradas:

set.seed(1234)  
recordings <- data.frame(V1 = sample(LETTERS, 10),
                         V2 = sample(LETTERS, 10),
                         V3 = letters[1:10], stringsAsFactors = FALSE)

records <- function(recordings, string){ 

  rws <- which(recordings == string, arr.ind = TRUE)[,1]

  cls <- which(recordings == string, arr.ind = TRUE)[,2]

  recordings <- recordings[rws, -cls, drop = FALSE]

  return(recordings)

}

Для A, будет возвращено:

records(recordings, "A")

  V2 V3
7  F  g

Для X:

records(recordings, "X")

  V3
4  d
5  e

Это предполагает, чтозначение отсутствует во всех столбцах.

Если вам нужно знать только соответствующие значения строки:

records <- function(recordings, string){ 

  return(which(recordings == string, arr.ind = TRUE)[,1])

}

records(recordings, "X")
[1] 4 5
0 голосов
/ 26 декабря 2018

Посмотрите, хотите ли вы следующее.

Сначала я составлю набор данных, поскольку вы его еще не опубликовали.

set.seed(1234)    # Make the results reproducible
recordings <- data.frame(V1 = sample(LETTERS, 10),
                         V2 = sample(letters, 10),
                         V3 = sample(4, 10, TRUE))

Теперь функция.

records <- function(DF, string){
  inx <- DF == string
  i <- apply(inx, 1, function(x) Reduce('||', x))
  DF[i, which(colSums(!inx) == nrow(DF)), drop = FALSE]
}

records(recordings, "A")
#  V2 V3
#7  f  3

records(recordings, "x")
#  V1 V3
#5  S  1
...