강제로 NA를 도입할 때 경고를 피하는 방법
저는 일반적으로 경고를 받지 않도록 R을 코드화하는 것을 선호하지만, 사용할 때 경고를 피하는 방법을 모르겠습니다.as.numeric
문자 벡터를 변환합니다.
예:
x <- as.numeric(c("1", "2", "X"))
강제로 NA를 도입했기 때문에 경고를 줄 것입니다.저는 강요에 의해 NA가 도입되기를 원합니다 - "네, 이것이 제가 하고 싶은 일입니다"라고 말할 수 있는 방법이 있나요?아니면 그냥 경고를 받고 살아야 하나요?
아니면 이 작업에 다른 기능을 사용해야 합니까?
사용하다suppressWarnings()
:
suppressWarnings(as.numeric(c("1", "2", "X")))
[1] 1 2 NA
이렇게 하면 경고가 표시되지 않습니다.
suppressWarnings()
이미 언급되었습니다.문제가 있는 문자를 먼저 수동으로 NA로 변환하는 방법도 있습니다.당신의 특별한 문제에 대해서는taRifx::destring
바로 그렇게 합니다.이렇게 하면 기능에서 예기치 않은 다른 경고가 발생하더라도 이 경고는 억제되지 않습니다.
> library(taRifx)
> x <- as.numeric(c("1", "2", "X"))
Warning message:
NAs introduced by coercion
> y <- destring(c("1", "2", "X"))
> y
[1] 1 2 NA
> x
[1] 1 2 NA
일반적으로 경고를 억제하는 것이 최선의 해결책은 아닙니다. 예기치 않은 입력이 제공될 때 경고를 받는 것이 좋습니다.
아래 솔루션은 데이터 형식 변환 중에 NA만 유지하기 위한 래퍼입니다.패키지가 필요하지 않습니다.
as.num = function(x, na.strings = "NA") {
stopifnot(is.character(x))
na = x %in% na.strings
x[na] = "0"
x = as.numeric(x)
x[na] = NA_real_
x
}
as.num(c("1", "2", "X"), na.strings="X")
#[1] 1 2 NA
나는 우리가 숫자로 변환할 수 없는 다양한 값을 가질 수 있는 경우를 위해 장고레키 함수를 약간 수정했습니다.내 기능에서는 템플릿 검색이 수행되며 템플릿을 찾을 수 없으면 FALSE가 반환됩니다.!gperl 이전에, 그것은 우리가 템플릿과 일치하지 않는 벡터 요소가 필요하다는 것을 의미합니다.나머지는 다음과 유사합니다.as.num
기능.예:
as.num.pattern <- function(x, pattern){
stopifnot(is.character(x))
na = !grepl(pattern, x)
x[na] = -Inf
x = as.numeric(x)
x[na] = NA_real_
x
}
as.num.pattern(c('1', '2', '3.43', 'char1', 'test2', 'other3', '23/40', '23, 54 cm.'))
[1] 1.00 2.00 3.43 NA NA NA NA NA
언급URL : https://stackoverflow.com/questions/14984989/how-to-avoid-warning-when-introducing-nas-by-coercion
'source' 카테고리의 다른 글
코코아에서 Excel(.xlsx) 파일 만들기 (0) | 2023.06.09 |
---|---|
다중 생성자를 사용한 ASP.NET 코어 종속성 주입 (0) | 2023.06.09 |
bash에서 여러 백그라운드 명령을 한 줄로 실행하려면 어떻게 해야 합니까? (0) | 2023.06.04 |
iPhone 시뮬레이터에서 호스트 시스템 자체에 액세스하는 방법 (0) | 2023.06.04 |
각 'when' 블록에 여러 값이 포함된 사례 문장 (0) | 2023.06.04 |