>

R에서 중첩 루프를 실행 중이며 계속 오류가 발생합니다. 예기치 않은 '입력'오류가 계속 발생합니다.

rowcounter=0
for (item in nrs$hesid){
    rowcounter<-rowcounter+1
    for (name in colnames(all)){
        if (item in name){
            all['all','name']<-nrs[rowcounter,'TPM']
        }
    }
}

실행할 때

rowcounter=0
>for (item in nrs$hesid){
+ rowcounter<-rowcounter+1
+ for (name in colnames(all)){
+ if (item in name){
Error: unexpected 'in' in:
"for (name in colnames(all)){
if (item in"
> all['all','name']<-nrs[rowcounter,'TPM']
Error in x[...] <- m : replacement has length zero
> }
Error: unexpected '}' in "}"
> }
Error: unexpected '}' in "}"
> }
Error: unexpected '}' in "}"


  • 답변 # 1

    % in % vs in

    %in%   x 요소를 확인하는 R에서 많이 사용되지 않는 연산자입니다.  세트 (벡터) X 논리 결과 T 를 출력합니다.  또는 F . 대조적으로, for  루프에는 in 가 필요합니다  일반적으로 start:finish 형식의 정수로 표현되는 세트의 멤버를 반복하는 키워드  비록 당신이 names in colnames(all) 에 여기 있지만 작동합니다.

    "Hello" %in% c("Hello", "Hi", "Salutations") # TRUE
    "Goodbye" %in% c("Hello", "Hi", "Salutations") # FALSE
    
    

    따라서 코드의 다른 모든 것이 정확하다면 (재현 가능한 예없이 알 수있는 방법이 없다면) 다음과 같이 작동합니다.

    rowcounter=0
    for (item in nrs$hesid){
        rowcounter<-rowcounter+1
        for (name in colnames(all)){
            if (item %in% name){
                all['all','name']<-nrs[rowcounter,'TPM']
            }
        }
    }
    
    

  • 이전 Groovy는 스크립트에서 정적 게터/세터를 호출하지 않습니다
  • 다음 install4j를 사용하여 (기본값) 레지스트리 값을 변경하는 방법