>

질문이 있습니다. 사용자 입력에 따라 다른 데이터 프레임 (A-F)을 만드는 많은 if 문이 있습니다. 경우에 따라 일부 데이터 프레임이 비어 있으므로 (A-C)는 비어 있지만 (D-F)에는 정보가 있습니다.

데이터 프레임이 비어 있지 않은 경우에만 행을 결합하는 조건부 rbind ()를 만들려고합니다.

이 문제를 어떻게 해결할지 잘 모르겠습니다. 여러 가지 조건을 작성하고 다른 if 문을 사용 해야하는지 모르겠습니다.

cond_a <- nrow(a) != 0
cond_b <- nrow(b) != 0
cond_c <- nrow(c) != 0
cond_d <- nrow(d) != 0
cond_e <- nrow(e) != 0
cond_f <- nrow(f) != 0

그런데 이러한 조건을 어떻게 활용해야할지 모르겠습니다 ...

편집 : 한 걸음 물러서서 더 잘 설명하려면 : 열로 하위 설정하여 6 개의 다른 데이터 프레임으로 분할하는 하나의 데이터 프레임이 있으므로 6 개의 데이터 프레임 (A-G)으로 분할됩니다. 이 열에는 문자 A-G가 있습니다. 해당 열의 문자 A-G는 사용자 입력에 따라 변경됩니다.

그런 다음 "A가 비어 있지 않으면이 집계를 수행하십시오"라는 일련의 if 문이 있으므로 df에 데이터가없는 경우 df를 건너 뜁니다. 집계에는 16-19 개의 열이 사용됩니다. 빈 df가 집계되지 않았으므로 여전히 19 개의 열이 있습니다. 이러한 if 문과 집계를 수행 한 후에는 집계되었거나 (16 열) 여전히 비어있는 (df 열, 19 열) dfA, dfB, dfC 등이 남았습니다. 그런 다음 "집계 된 df (16 열) rbind의 경우 df가 집계되지 않은 경우 (비어있는 경우) rbind를 수행하지 마십시오.

감사합니다!

  • 답변 # 1

    다음과 같이 할 수 있습니다 :

    <올>

    선택하려는 데이터 프레임의 빈 목록을 만듭니다.

    와이즈 비츠 무리 쓰기  0이 아닌 0을 포함하는 단어 확인

    1 단계에서 만든 빈 목록에 0이 아닌 DF 이름을 계속 추가

    이 이름을 if 로 축소하는 표현식을 작성하십시오.  표현

    표현식 평가

    여기에 스크립트가 있습니다 :

    1. 데이터 프레임의 이름을 저장할 빈 목록 만들기

    rbind
    
    

    2&3. 문이 데이터 프레임이 제로가 아닌지 확인하는 경우 true 인 경우 이름을 목록에 추가하십시오

    list.df = " "
    
    

    .... A부터 G까지

    if(nrow(df.a) > 0) { 
      list.df=c(list.df,deparse(substitute(df.a)))
     }
    if(nrow(df.b) > 0) { 
      list.df=c(list.df,deparse(substitute(df.b)))
     }
    if(nrow(df.c) > 0) { 
     list.df=c(list.df,deparse(substitute(df.c)))
     }
    
    

    4. 식을 공식화

    if(nrow(df.g) > 0) { 
     list.df=c(list.df,deparse(substitute(df.g)))
     }
    
    

    5. 표현식 평가

    list.df = list.df[2:length(list.df)] #remove first element 
    expression = paste0("df.combined = rbind(",paste0( list.df, collapse =
    ','), paste0(")"))
    
    

    eval(parse(text=expression))  찾고있는 최종 데이터 세트가됩니다

    df.combined

  • 이전 c++ - 부스트 라이브러리와 함께 std - : bind 자리 표시자를 사용하는 문제
  • 다음 ruby on rails - 내 컨트롤러에서이 AssociationTypeMismatch가 발생하는 원인은 무엇입니까?