R 코드 2.3.x로 작성되고 rpy와 함께 작동하지만 2.15.3으로 이동하고 rpy2로 이동하는이 R 코드 행을 디버깅하려고합니다. 그것은 부서진 것 같다? 내 행렬은 꽤 크고 길이는 409x409입니다. 대각선은 부동 정수로 채워져 있습니다 (제 생각에는?). 나는 모아진 원시 행렬 파일을보고 있는데, diags는 99999.00으로 채워진다. 세포의 나머지는 ##의 형식에 ##R 오류 : 교체 대각선 길이가 잘못되었습니다
해당 코드의 잘못된 라인 :. 내가 the SVN.R website 보았다
Traceback (most recent call last): File "", line 1, in File "C:\Python27\lib\site-packages\rpy2\robjects\functions.py", line 166, in call return super(SignatureTranslatedFunction, self).call(*args, **kwargs) File "C:\Python27\lib\site-packages\rpy2\robjects\functions.py", line 99, in call res = super(Function, self).call(*new_args, **new_kwargs) RRuntimeError: Error in
diag<-
(*tmp*
, value = c(72999.27, 1.39576, 2.79616323829879, : replacement diagonal has wrong length
:
diag(mymatrix) <- apply(mymatrix, 1, function(x) min(x[x>0], na.rm=T)) * 0.73
다음과 같은 오류를 반환 함수의 내부 동작을보고 오류의 출처를 확인하십시오.
if (len.v != 1L && len.v != len.i)
stop("replacement diagonal has wrong length")
내 대답은 내 대답을 말하는 것 같아, 내 교체 가치는 적절한 길이가 아니지, 그렇지? 그렇다면이 대칭의 "대치"를 위해 교체 대각선 길이를 적당한 길이로 늘리려면 어떻게해야합니까?
편집 --Added 문제에 대한 컨텍스트 Python 스크립트 통해
이 행렬은 초기에 409x409 어레이 (NumPy와 사용)로서 생성된다 purposes-- 및 ro.r.assign
를 사용하여 할당.
mymatrix <- do.call("rbind", mymatrix)
하지만 지금 2.15.3 및 RPY2, 나는이 할 사용하여 오류가 발생했습니다 : 그런 다음 내 R 스크립트, mymatrix
사용하여 호출합니다 (R 버전 2.3.1 형태로) 원래이었다. 배열을 호출하십시오. 그것은 나에게 다음과 같은 오류 줄 것이다 :
mymatrix <- do.call("rbind", as.list(mymatrix))
하지만 지금 생각 :
File "", line 1, in File "C:\Python27\lib\site-packages\rpy2\robjects\functions.py", line 166, in call return super(SignatureTranslatedFunction, self).call(*args, **kwargs) File "C:\Python27\lib\site-packages\rpy2\robjects\functions.py", line 99, in call res = super(Function, self).call(*new_args, **new_kwargs) RRuntimeError: Error in do.call("rbind", mymatrix) : second argument must be a list
을 아래에 서면 그래서 이것에 대한 내 "수정"단순히 목록에 변환 as.list
를 사용하는 것이 었습니다 더 나아가 이것이 아마도 문제라고 생각합니다. 대각선이 올바로 작동하려면 다시 이것을 변환해야합니까? 그렇다면 어떻게해야합니까?
감사합니다.
적용 함수는 몇 개의 값을 리턴합니까? mymatrix에 NA가 있습니까? – rawr
좋은 질문입니다. 추가 컨텍스트를 보려면 ** 편집 ** **을 읽어주십시오. 행렬에는 NAs가 있지만, 처음에는 수치적인 배열로 전달됩니다. 그러나이 문제가 발생하여이를 목록으로 변환했습니다. 그것은 내가 그것을 변형시키고 대각선을 수행 할 필요가있을 수 있지만 그것은 내가 잃어버린 곳입니다. – myClone
'do.call (rbind, as.list (mymatrix))'는 행렬 [409 by 409] 행렬을 [409 * 409 by 1] 행렬로 변환하므로 문제가 될 가능성이 큽니다. 어쨌든 왜 당신이하려고 했어요? – rawr