길이가 다른 두 목록 일치

사용자 3067851

목록간에 변수 이름이 동일한 경우에만 2 개 목록의 값을 일치 시키려고합니다. 결과가 전체 일치 수로 채워진 긴 목록의 길이 목록이되기를 바랍니다.

jac <- structure(list(s1 = "a", s2 = c("b", "c", "d"), s3 = 5), 
                 .Names = c("s1", "s2", "s3"))

larger <- structure(list(s1 = structure(c(1L, 1L, 1L), .Label = "a", class = "factor"), 
          s2 = structure(c(2L, 1L, 3L), .Label = c("b", "c", "d"), class = "factor"), 
          s3 = c(1, 2, 7)), .Names = c("s1", "s2", "s3"), row.names = c(NA, -3L), class = "data.frame")

내가 사용하고 mapply(FUN = pmatch, jac, larger)있지만 내가 아래하고자하는 형식으로 나에게 올바른 총을 준다 :

s1  s2  s3  s1result    s2result    s3result
a   c   1   1   2   NA
a   b   2   1   1   NA
a   c   7   1   3   NA

그러나 pmatch가 모든 상황에서 이름 일치를 보장하지는 않는다고 생각하므로 여전히 문제가있는 함수를 작성했습니다.

prodMatch <- function(jac,larger){
      for(i in 1:nrow(larger)){
          if(names(jac)[i] %in% names(larger[i])){
               r[i] <- jac %in% larger[i]
               r
          }
     }
}

누구든지 도울 수 있습니까?

하나의 배수가되지 않게하는 또 다른 데이터 세트 :

 larger2 <- 
    structure(list(s1 = structure(c(1L, 1L, 1L), class = "factor", .Label = "a"), 
        s2 = structure(c(1L, 1L, 1L), class = "factor", .Label = "c"), 
        s3 = c(1, 2, 7), s4 = c(8, 9, 10)), .Names = c("s1", "s2", 
    "s3", "s4"), row.names = c(NA, -3L), class = "data.frame")
Psidom

mapply일치하는 인덱스 목록을 반환합니다. 다음을 사용하여 데이터 프레임으로 변환 할 수 있습니다 as.data.frame.

as.data.frame(mapply(match, jac, larger))
#   s1 s2 s3
# 1  1  2 NA
# 2  1  1 NA
# 3  1  3 NA

그리고 cbind와 결과는 larger예상 무엇을 제공합니다 :

cbind(larger, 
      setNames(as.data.frame(mapply(match, jac, larger)), 
               paste(names(jac), "result", sep = "")))

#  s1 s2 s3 s1result s2result s3result
#1  a  c  1        1        2       NA
#2  a  b  2        1        1       NA
#3  a  d  7        1        3       NA

업데이트 : 두 목록의 이름이 일치하지 않는 경우를 처리하기 위해 larger이름과 이름을 동시에 반복 jac하고 다음과 같이 요소를 추출 할 수 있습니다.

as.data.frame(
    mapply(function(col, name) { 
        m <- match(jac[[name]], col)
        if(length(m) == 0) NA else m  # if the name doesn't exist in jac return NA as well
        }, larger, names(larger)))

#  s1 s2 s3
#1  1  2 NA
#2  1  1 NA
#3  1  3 NA

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

길이가 다른 두 목록을 서로 연결합니다.

분류에서Dev

길이가 다른 두 목록의 순환 조합

분류에서Dev

길이가 다른 두 배열을 비교하고 일치 항목을 제외합니다.

분류에서Dev

길이가 다른 문자열 접두사 일치

분류에서Dev

두 개의 목록, 공통 일치가 발견되면 다른 목록 요소 인쇄

분류에서Dev

Python-길이가 불규칙한 다른 목록의 요소를 새 목록에 일치

분류에서Dev

설치된 패키지의 두 가지 다른 목록

분류에서Dev

두 개의 목록 목록이 주어진 경우 특정 일치 항목 찾기-가장 빠른 솔루션

분류에서Dev

두 목록의 구성원이 다른 위치 찾기

분류에서Dev

길이가 같은 두 개의 입력 목록과 길이가 다른 두 개의 입력 목록에서 다르게 동작합니다 (구성표).

분류에서Dev

목록의 목록, 목록의 첫 번째 항목을 다른 목록의 두 번째 요소와 일치

분류에서Dev

일치를 위해 길이가 다른 두 개의 2D 배열 비교

분류에서Dev

Python, 긴 목록에서 제거하여 두 목록 길이 일치

분류에서Dev

공통 열에서 길이가 다른 두 파일을 Linux 명령 줄을 사용하여 여러 일치 항목으로 결합

분류에서Dev

다른 목록에 다른 유형의 두 목록 추가

분류에서Dev

파이썬은 길이가 다른 두 목록을 번갈아 가며 결합합니다.

분류에서Dev

QTP : 동일한 값을 가진 두 변수의 다른 길이

분류에서Dev

DHCP 클라이언트 목록의 MAC 주소가 제조업체와 다릅니다. 또한 두 개의 다른 MAC 주소를 갖는 동일한 장치

분류에서Dev

배치, 두 파일 비교 및 차이점을 다른 파일에 기록

분류에서Dev

두 번째 호출 후 elementtree 목록의 길이가 0이됩니다.

분류에서Dev

길이가 다른 두 목록에 foreach를 사용하는 방법은 무엇입니까?

분류에서Dev

두 개의 서로 다른 시트의 데이터 및 이메일 목록

분류에서Dev

두 목록을 비교하고 일치하지 않을 경우 각 목록에 빈 행을 추가합니다.

분류에서Dev

단일 목록에서 두 개의 다른 값을 가져 오는 Linq 쿼리

분류에서Dev

다른 목록에서 가장 일치하는 항목으로 목록 정렬

분류에서Dev

Python에서 크기가 다른 두 목록 목록 결합

분류에서Dev

Linux의 두 키를 기반으로 길이가 다른 두 파일 병합

분류에서Dev

두 개의 다른 이름 목록의 특정 순서로 파일 병합

분류에서Dev

단일 iterable을 사용하여 두 개의 다른 목록 이해력 생성

Related 관련 기사

  1. 1

    길이가 다른 두 목록을 서로 연결합니다.

  2. 2

    길이가 다른 두 목록의 순환 조합

  3. 3

    길이가 다른 두 배열을 비교하고 일치 항목을 제외합니다.

  4. 4

    길이가 다른 문자열 접두사 일치

  5. 5

    두 개의 목록, 공통 일치가 발견되면 다른 목록 요소 인쇄

  6. 6

    Python-길이가 불규칙한 다른 목록의 요소를 새 목록에 일치

  7. 7

    설치된 패키지의 두 가지 다른 목록

  8. 8

    두 개의 목록 목록이 주어진 경우 특정 일치 항목 찾기-가장 빠른 솔루션

  9. 9

    두 목록의 구성원이 다른 위치 찾기

  10. 10

    길이가 같은 두 개의 입력 목록과 길이가 다른 두 개의 입력 목록에서 다르게 동작합니다 (구성표).

  11. 11

    목록의 목록, 목록의 첫 번째 항목을 다른 목록의 두 번째 요소와 일치

  12. 12

    일치를 위해 길이가 다른 두 개의 2D 배열 비교

  13. 13

    Python, 긴 목록에서 제거하여 두 목록 길이 일치

  14. 14

    공통 열에서 길이가 다른 두 파일을 Linux 명령 줄을 사용하여 여러 일치 항목으로 결합

  15. 15

    다른 목록에 다른 유형의 두 목록 추가

  16. 16

    파이썬은 길이가 다른 두 목록을 번갈아 가며 결합합니다.

  17. 17

    QTP : 동일한 값을 가진 두 변수의 다른 길이

  18. 18

    DHCP 클라이언트 목록의 MAC 주소가 제조업체와 다릅니다. 또한 두 개의 다른 MAC 주소를 갖는 동일한 장치

  19. 19

    배치, 두 파일 비교 및 차이점을 다른 파일에 기록

  20. 20

    두 번째 호출 후 elementtree 목록의 길이가 0이됩니다.

  21. 21

    길이가 다른 두 목록에 foreach를 사용하는 방법은 무엇입니까?

  22. 22

    두 개의 서로 다른 시트의 데이터 및 이메일 목록

  23. 23

    두 목록을 비교하고 일치하지 않을 경우 각 목록에 빈 행을 추가합니다.

  24. 24

    단일 목록에서 두 개의 다른 값을 가져 오는 Linq 쿼리

  25. 25

    다른 목록에서 가장 일치하는 항목으로 목록 정렬

  26. 26

    Python에서 크기가 다른 두 목록 목록 결합

  27. 27

    Linux의 두 키를 기반으로 길이가 다른 두 파일 병합

  28. 28

    두 개의 다른 이름 목록의 특정 순서로 파일 병합

  29. 29

    단일 iterable을 사용하여 두 개의 다른 목록 이해력 생성

뜨겁다태그

보관