函数返回相关的列,并删除相应的列

时间:2018-12-26 14:36:29

标签: r multiple-columns

到目前为止,这是我的代码:

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

}

请帮助

2 个答案:

答案 0 :(得分:0)

查看以下内容是否是您想要的。

首先,我将组成一个数据集,因为您尚未发布数据集。

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

答案 1 :(得分:0)

您可以尝试stream。使用@RuiBarradas中的数据:

import java.util.stream.Collectors;

对于which,它将返回:

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