list<-list(
z= c(a=30000,b=12,c=600,d=10),
x=c(a=30000,b=12,c=list(list(1600,1400,1400,1200)),d=list(list(10,10))))
> class(list$z)
[1] "numeric"
> class(list$x)
[1] "list"
#avoid this:
list$x$c<-as.numeric(list$x$c)
list$x$d<-as.numeric(list$x$d)
숫자가 아닌 목록의 각 요소를 as.numeric으로 변환하는 함수를 만드는 방법은 무엇입니까? 시도 # 1
> list<-rapply(list, as.numeric, how = "replace")
> list
$z
[1] 30000 12 600 10
$x
$x$a
[1] 30000
$x$b
[1] 12
$x$c
$x$c[[1]]
[1] 1600
$x$c[[2]]
[1] 1400
$x$c[[3]]
[1] 1400
$x$c[[4]]
[1] 1200
$x$d
$x$d[[1]]
[1] 10
$x$d[[2]]
[1] 10
예상 출력, as.numeric () 함수를 사용하여 개별적으로 얻은 결과 :
list$x$c<-as.numeric(list$x$c)
list$x$d<-as.numeric(list$x$d)
> list
$z
a b c d
30000 12 600 10
$x
$x$a
[1] 30000
$x$b
[1] 12
$x$c
[1] 1600 1400 1400 1200
$x$d
[1] 10 10
단일 기능으로 동일한 결과를 얻을 수있는 방법이 있습니까? 숫자로 변환하고 동일한 구조를 유지하는 방법이 있습니까?
여기 있습니다 :
library(purrr)
list <- list(
z = c(a = 30000, b = 12, c = 600, d = 10),
x = c(a = 30000, b = 12, c = list(list(1600, 1400, 1400, 1200)), d = list(list(10,10))))
list <- list %>% modify_depth(2, as.numeric)
list
산출:
> list
$z
a b c d
30000 12 600 10
$x
$x$a
[1] 30000
$x$b
[1] 12
$x$c
[1] 1600 1400 1400 1200
$x$d
[1] 10 10
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다