0
호출시 선택적 인수를 사용하는 Fortran 서브 루틴이 있습니다. Fortran 서브 루틴에서 R 래퍼로 선택적 인수를 전달하는 방법
subroutine data (n,ns,alpha,covmat,x,y)
integer, intent(in):: n,ns
double precision, intent(in) :: alpha
double precision, intent(in), optional ::covmat(n,ns)
double precision, intent(out) :: x(n),y(n)
....
end subroutine data
나는이 서브 루틴에 대해 다음과 R 래퍼를 시도하고 오류 메시지가 있어요 :
Error in array(x, c(length(x), 1L), if (!is.null(names(x))) list(names(x), :
'data' must be of a vector type, was 'NULL'
내가 제대로 .Fortran() 호출에 인수를 전달하면 잘 모르겠어요합니다. 나는 온라인으로 유용한 것을 찾을 수 없었다.
data1 <- function(n,ns,alpha,covmat=NULL){
tmp <- .Fortran("data",
n = as.integer(n),ns= as.integer(ns)
alpha=as.numeric(alpha),covmat=as.vector(covmat),
x=as.double(rep(0,n)),y=as.double(rep(0,n)))
)
}
result <- list(x=tmp$x, y=tmp$y)
return(result)
}
"작동하지 않았다"는 것은 무엇을 의미합니까? 질문에이 문구를 사용하지 마십시오. 아무 의미도 없습니다. 어떤 가치를 되찾았습니까? 어떤 가치가 있습니까? 뭔가 인쇄 했습니까? 충돌 했나요? 오류 메시지가 있습니까? –
@VladimirF : 의견을 주셔서 감사합니다. 나는 다음 게시물에 대해 염두에두고 있습니다. 오류 메시지가 나타납니다 : "배열에 오류가 있습니다 (x, c (length (x), 1L), if (! is notnull (names (x))) list x), : '데이터'는 벡터 형식이어야하며 'NULL'입니다. " – Vineetha
이 정보를 포함하도록 게시물을 편집 할 수 있습니다. –