ProgramingTip

'double'을 입력하도록 목록 생성을 강제하는 방법

bestdevel 2020. 11. 13. 23:52
반응형

'double'을 입력하도록 목록 생성을 강제하는 방법


코드 :

a <- structure(list(`X$Days` = c("10", "38", "66", "101", "129", "185", "283", 
                                 "374")), .Names = "X$Days")

다음 a과 같다

$`X$Days`
[1] "10"  "38"  "66"  "101" "129" "185" "283" "374"

나는 강요하려는 숫자 a값의 배열,하지만 강요 기능은 저를 반환

Error: (list) object cannot be coerced to type 'double'

감사합니다.


당신의 모든 요소를 ​​변환 할 경우 a단일 숫자로 벡터length(a)(이 길이 1의 경우에도 OK) 1보다 큰, 당신은 할 수 unlist개체 먼저 다음 변환합니다.

as.numeric(unlist(a))
# [1]  10  38  66 101 129 185 283 374

여기에는 품질 관리가 없습니다. 또한 X$Days많은 이상한 이름입니다.


목록을 숫자로 변환해야하는 여러 요소로 표시하는 경우 lapply(a, as.numeric).


목록 부분 집합을 사용하여 변환하려는 요소를 선택할 수도 있습니다. 목록에 둘 이상의 요소가있는 경우 유용합니다.

as.numeric(a[[1]])


일부 데이터에 문제가 있습니다. 중히 여기다 :

as.double(as.character("2.e")) # This results in 2

또 다른 해결책 :

get_numbers <- function(X) {
    X[toupper(X) != tolower(X)] <- NA
    return(as.double(as.character(X)))
}

이 경우 루프도 작업을 수행합니다 (일반적으로 충분히 빠름).

a <- array(0, dim=dim(X))
for (i in 1:ncol(X)) {a[,i] <- X[,i]}

참고 URL : https://stackoverflow.com/questions/12384071/how-to-coerce-a-list-object-to-type-double

반응형