lme
의 출력이 R
에 있습니다. 시피리스트의 모든 행렬을 data.frames로 변환 R
library(nlme)
fm2 <- lme(distance ~ age + Sex, data = Orthodont, random = ~ 1)
str(fm2)
출력 (fm2
)의 일부 요소는 예컨대 매트릭스 fm2$varFix
개체를 허용하고 모든 부분 행렬을 data.frames
으로 변환하는 함수를 찾고 있습니다.
lme
의 출력이 R
에 있습니다. 시피리스트의 모든 행렬을 data.frames로 변환 R
library(nlme)
fm2 <- lme(distance ~ age + Sex, data = Orthodont, random = ~ 1)
str(fm2)
출력 (fm2
)의 일부 요소는 예컨대 매트릭스 fm2$varFix
개체를 허용하고 모든 부분 행렬을 data.frames
으로 변환하는 함수를 찾고 있습니다.
:
lapply(fm2, function(x) {if(any(class(x)=="matrix")) as.data.frame(x) else x})
편집 :이 답변이 이미 허용되어 있지만이 반복적으로 목록에있는 행렬을 변환하지 않기 때문에, 나는이 솔루션에 만족하지 않았다 및 요소의 속성이 손실됩니다. 다음 해결책으로 두 문제를 해결할 수 있다고 생각합니다.
library(nlme)
fm2 <- lme(distance ~ age + Sex, data = Orthodont, random = ~ 1)
str(fm2)
replace_sub_dataframes <- function(x)
{
if(any(class(x)=="list"))
{
x_copy = x
attrs = setdiff(names(attributes(x)),"names")
x = lapply(x,replace_sub_dataframes)
if(length(attrs)>0)
{
for(i in 1:length(attrs))
{
attr(x,attrs[i]) <- replace_sub_dataframes(attr(x_copy,attrs[i]))
}
}
return(x)
}
else
{
if(any(class(x)=="matrix"))
return(as.data.frame(x))
else
return(x)
}
}
fm3 = lapply(fm2, replace_sub_dataframes)
으로 변환됩니다. class (lapply (fm2, function (x) {if (any (class (x) $ varFix) [1] "data.frame"클래스 (fm2 $ varFix) "행렬"'좋은 해결책! –
예상되는 결과는 무엇입니까? 아마도'broom :: tidy (fm2)' – akrun
출력은 같은 객체 (목록)이지만 모든 행렬은 데이터 프레임 – MyQ