여러 경고“알 수없는 열”수정


171

모든 유형의 명령 (예 : 패키지에 업데이트 설치에 대한 str (x))에 대해 "알 수없는 열"이라는 여러 경고가 지속적으로 표시되며이를 디버깅하거나 수정하는 방법을 잘 모르겠습니다.

"알 수없는 열"이라는 경고는 내가 이름을 바꾼 tbl_df의 변수와 명확하게 관련되어 있지만 tbl_df와 관련이없는 것처럼 보이는 모든 종류의 명령에서 경고가 나타납니다 (예 : 패키지에 업데이트 설치, str (x), 여기서 x는 단순히 문자형 벡터).


11
나는 그 질문이 모호하다는 것을 알고 있지만 문제처럼 보인다. 난센스 (예 : 오타)를 입력하고 경고를받을 수도 있습니다. 어떻게 든 IDE 환경 자체에서 영구적이라고 생각합니다.
ssp3nc3r

1
정확한 명령과 출력 결과를 게시 할 수 있습니까?
konvas

3
예, 최신 버전의 RStudio 환경을 정리하고 다시 시작한 후 TBL_DF 객체를로드 할 때 환경이 시작됩니다. as.data.frame으로 변환하고 모든 것을 닫은 다음 데이터 프레임을 다시로드하여 문제를 해결 한 것 같습니다. 앞으로 tbl_df를 사용하여 문제를 피하는 방법과 환경에서 경고가 지속되는 이유 두 가지를 이해하고 싶습니다.
ssp3nc3r 2016 년

1
같은 오류가 발생합니다. 가 FACEBOOK.1당신의 data.frames 중 하나에서 열 당신은 그것을 부르지 df$FACEBOOK.1당신의 R 스크립트 어딘가? 내 겸손한 추측은 이것이 tibblev1.1에 도입 된 패키지 의 오류입니다 : blog.rstudio.org/2016/07/05/tibble-1-1 . 당신은 마 tibble명시 적으로로드?
dpprdan

5
이것은 나에게도 일어나고 있습니다. 여러 컴퓨터에서 패턴을 재현 할 수 있지만 library (Hmisc) 또는 dplyr을 사용하여 데이터 프레임 만들기와 같은 일부 명령 후에 경고가 무작위로 나타납니다. 경고는 아직 작성하지 않은 열을 나타냅니다. 나중에 코드에서 작성합니다. R과 Rstudio를 여러 번 다시 시작했으며 코드를 깨끗하게 실행해도 도움이되지 않습니다. 이것은 무엇입니까 ???
Nova

답변:


58

이는 RStudio의 진단 도구 (코드에 경고 및 가능한 실수를 표시하는 도구)의 문제입니다. RStudio v1.1.103 이상에서 @ kevin-ushey 에 의해이 커밋 에서 부분적으로 수정되었습니다 . 경고는 여전히 발생하지만 빈도는 적지 만 수정은 부분적입니다. 이 문제는 https://github.com/rstudio/rstudio/issues/7372 에서 재현 가능한 예제로보고 되었으며 RStudio v1.4 풀 요청 에서 수정되었습니다 (출시 예정).

몇 가지 해결 방법이 있으며 원하는 솔루션을 선택하십시오.

  • 기본 설정 / 코드 / 진단의 모든 파일에 대한 코드 진단을 비활성화합니다.

  • 특정 파일에 대한 모든 진단을 비활성화합니다 :

    열린 파일의 시작 부분에 추가하십시오 :

     # !diagnostics off

    그런 다음 파일을 저장하면 경고가 더 이상 표시되지 않습니다.

  • 경고를 유발하는 변수에 대한 진단을 비활성화합니다

    열린 파일의 시작 부분에 추가하십시오 :

     # !diagnostics suppress=<comma-separated list of variables>

    그런 다음 파일을 저장하면 경고가 더 이상 표시되지 않습니다.

RStudio의 진단 도구가 소스 코드를 분석하여 오류를 감지하고 진단 검사를 수행 할 때 초기화되지 않은 티블의 열에 액세스하여 경고를 표시하기 때문에 경고가 나타납니다. 관련이없는 항목을 실행하기 때문에 경고가 표시되지 않습니다. RStudio 진단 프로그램이 실행될 때 (파일을 저장 한 후 수정 한 경우 무언가를 실행할 때) 경고가 표시됩니다.


13
좋은 전화. 이것은 RStudio 0.99에서 저에게 효과적이었습니다. 도구> 글로벌 옵션> 코드> 진단
Chris Holbrook

8
R 3.4.3의 RStudio 1.1.383에서 문제가 여전히 존재합니다.
MS Berends

4
버전 1.1.423에 여전히 문제가 있습니다. '진단 표시'를 선택 해제하면 효과적입니다.
Adrian

2
v1.1.456이 (가) 여전히 존재합니다. 한숨.
지리학

3
우분투의 RStudio 서버에 R Studio v1.1.643과 R v3.5.1이 함께 존재하지 않습니다.
RFelber

49

같은 문제가 발생했는데 왜 그런지 모르겠지만 문제 가 발생 했을 때 핀 다운 하여 문제가 발생하는 것을 막을 수있었습니다.

문제는 인덱싱에서 파생 된 새 열을 기본 R 데이터 프레임과 Tibble 데이터 프레임에 추가하는 것 같습니다. age기본 R 데이터 프레임에 새 열 ( )을 추가하는 다음 예를 보자 .

base_df <- data.frame(id = c(1:3), name = c("mary", "jill","steve"))

base_df$age[base_df$name == "mary"] <- 47

경고를 반환하지 않고 작동합니다. 그러나 똑딱 거리는 소리로 똑같이하면 경고가 발생합니다 (따라서 이상하고, 도발되지 않은 여러 경고 문제가 발생한다고 생각합니다).

library(tibble)

tibble_df <- tibble(id = c(1:3), name = c("mary", "jill","steve"))

tibble_df$age[tibble_df$name == "mary"] <- 47

Warning message:
Unknown column 'age' 

이것을 피하는 더 좋은 방법이 있지만, 먼저 NAs 벡터를 생성 하면 작업 이 수행된다는 것을 알았 습니다.

tibble_df$age <- NA

tibble_df$age[tibble_df$name == "mary"] <- 47

13
내 대답은 분명히 전체 이야기가 아닙니다. 나는 여전히 (여러) 경고를 받고 있으며 다른 의견 자들이 암시하는 것처럼 실망스러운 부분은 명백한 중재입니다. A는 tbl_df경고를 생산하는 데 필요한 것 같다,하지만 난 확신이 충분하다고 아닙니다. 즉, tbl_df다른 tidyverse 패키지 (예 : tidyr, dplyr)의 기능과 함께 사용될 경우이 경고가 발생할 수 있다고 생각합니다 . 중요한 패키지 제품군에 대해 지불해야 할 작은 가격이지만 그럼에도 불구하고 이상하고 성가신 일입니다.
saber

의 벡터를 만드는 것은 NA나를 위해 일했습니다! (RStudio 버전 1.1.456, R 버전 3.5.1)
petzi

때로는 R 날짜와 같은 열의 유형을 지정하고 싶을 때 NA나중에 채운 날짜가 숫자 유형으로 변환됩니다.
Jiāgěng

1
@ Jiāgěng as.Date(NA_character_)NA수업을 제공합니다 Date.
Stibu

티블은 설계 상 data.frames보다 더 제한적입니다. 의도적으로 일부만 할당하여 열을 시작하지 않아야 할 수도 있습니다. 그러나 이것이 보호 기능이며 설계 오류가 아닌 경우 티블 할당의 초기 일회성 오류가 훨씬 바람직합니다.
vinnief

17

"dplyr"패키지를 사용할 때이 문제에 직면했습니다.
"dplyr"라이브러리에서 "group_by"기능을 사용한 후이 문제가 발생하는 경우 :

변수를 그룹 해제하면 알 수없는 열 경고 문제가 해결됩니다. 때로는 문제가 해결 될 때까지 그룹 해제를 여러 번 반복해야했습니다.


5

클래스를 변환하면 data.frame문제가 해결되었습니다.

library(dplyr)
df <- data.frame(id = c(1,1:3), name = c("mary", "jo", "jill","steve"))
dfTbl <- df %>%
  group_by(id) %>%
  summarize (n = n())
class(dfTbl) # [1] "tbl_df"     "tbl"        "data.frame"
dfTbl = as.data.frame(dfTbl)
class(dfTbl) # [1] "data.frame"

@adts에서 부분 스크립트를 차용


그것은 매력처럼 작동합니다. 데이터 프레임으로 변환 한 다음 다시 티 블로 변환하는 데 단점이 있는지 궁금합니다. 그것이 잃어버린 경고입니까?
p130ter

1
나를 1.1.442 여전히 점점 RStudio 작동하지 않았다Warning message: Unknown or uninitialised column: 'bad_column'
andemexoax

3

티블과 랩 기능을 함께 처리 할 때이 문제가 발생했습니다. tibble은 데이터 프레임 안에 물건을 목록으로 저장하는 것처럼 보였습니다.

랩 함수의 결과를 tibble에 추가하기 전에 unlist를 사용하여 해결했습니다.


1

dyplyr 블록을 사용하여 생성 된 티블을 제외 하고는이 문제도 발생했습니다. 다음은 동일한 오류가 발생하는 방법을 보여주기 위해 sabre의 코드를 약간 수정 한 것입니다.

library(dplyr)

df <- data.frame(id = c(1,1:3), name = c("mary", "jo", "jill","steve"))

t <- df %>%
  group_by(id) %>%
  summarize (n = n())

t
str(t)


t$newvar[t$id==1] <- 0

1

다음 열을 선택하고 싶다고 가정 해 봅시다.

best.columns = 'id'

나에게 다음과 같은 경고가 나왔다.

df%>% select_(one_of(best.columns))

비록 내가 아는 한 dplyr, 이것은 예상대로 작동했지만 이것은 동일해야합니다.

df%>% select_(.dots = best.columns)

0

패키지를 dplyr::rename사용하여 열을 읽은 후를 사용하여 열의 이름을 바꾸면 이러한 경고가 나타납니다 readr.

열의 이전 이름은 spec속성 에서 이름이 바뀌지 않습니다 . 따라서 spec속성을 제거하면 경고가 사라집니다. 또한 "spec_tbl_df"클래스를 제거하는 것이 좋습니다.

attr(dat, "spec") <- NULL
class(dat) <- setdiff(class(dat), "spec_tbl_df")
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.