R function 수정하기 body(), reshape::melt 함수 에러 해결법
하루는 프로그램 돌리고 나온 리스트형 결과를 다시 모아서 그림을 그리려고 melt()함수를 사용했는데 자꾸 warning이 뜨더라..
1
2
3
4
5
6
7
8
9
10
> m.prop = rbind(melt(Est.prop$Est.prop.weighted), melt(Est.prop$Est.prop.allgene))
Warning messages:
1: In type.convert.default(X[[i]], ...) :
'as.is' should be specified by the caller; using TRUE
2: In type.convert.default(X[[i]], ...) :
'as.is' should be specified by the caller; using TRUE
3: In type.convert.default(X[[i]], ...) :
'as.is' should be specified by the caller; using TRUE
4: In type.convert.default(X[[i]], ...) :
'as.is' should be specified by the caller; using TRUE
구글링을 통해 melt
함수 내에 있는 lapply()
에 as.is=TRUE
로 설정을 바꿔주면 해결된다고 해서
임의로 as.is=TRUE
가 포함된 lapply()
문으로 수정해 newmelt 함수를 선언해봤다.
R 함수 수정하기
원래 있는 R 함수 수정하려면 body()
를 사용하면 된다.
1
2
3
4
5
6
7
newmelt <- reshape::melt.matrix #새로 정의하려는 newmelt 에 원래 melt 복붙
#> body(newmelt)[8][[1]]
#dn[char] <- lapply(dn[char], type.convert) #원래는 이랬었는데
# quote() 사용해서 as.is=TRUE 포함된 버전으로 치환
body(newmelt)[8][[1]] <- quote({dn[char] <- lapply(dn[char], type.convert, as.is = TRUE)})
수정된 newmelt() 사용해서 같은 코드 돌리면 warning message사라진다
끝!
reference
This post is licensed under CC BY 4.0 by the author.