의견을 찾기가 더 어려워서 이미 이것에 대한 의견을 잃어 버렸기 때문에 완전한 대답을해야한다고 생각합니다. nullglob의 예가 있습니다. 차이점을 보여주고 가족 기능을 많이 적용합니다. 다른 예제보다 더 좋습니다. 하나가 매우 느린 것과 같은 기능을 만들 때 그것은 모든 속도가 소비되는 곳이며 루핑상의 차이점을 찾지 못할 것입니다. 그러나 함수를 사소한 것으로 만들면 반복이 루프에 얼마나 영향을 미치는지 알 수 있습니다.
또한 다른 예제에서 미개척 된 적용 제품군의 일부 구성원은 흥미로운 성능 특성을 갖고 있다고 덧붙이고 싶습니다. 먼저 nullglob의 상대 결과에 대한 복제를 내 컴퓨터에 표시합니다.
n <- 1e6
system.time(for(i in 1:n) sinI[i] <- sin(i))
user system elapsed
5.721 0.028 5.712
lapply runs much faster for the same result
system.time(sinI <- lapply(1:n,sin))
user system elapsed
1.353 0.012 1.361
그는 또한 sapply를 훨씬 느리게 발견했습니다. 테스트되지 않은 다른 것들도 있습니다. 이전 일반 데이터의 매트릭스에 적용 버전
는 ...
mat <- matrix(1:n,ncol =1),1,sin)
system.time(sinI <- apply(mat,1,sin))
user system elapsed
8.478 0.116 8.531
그래서, 적용() 명령 자체는 for 루프보다 실질적으로 느리다. 내가 죄 (매트 [전, 1]).
가
다른 게시물에서 테스트하지 않는 것 또 하나는 tapply 인을 사용하는 경우 (루프 상당히 둔화되지 않습니다. 물론
system.time(sinI <- tapply(1:n, 1:n, sin))
user system elapsed
12.908 0.266 13.589
, 한 사람은 이런 식으로 사용하지 않을 것이고, 대부분의 경우 그러한 속도 문제를 훨씬 능가하는 유틸리티 일 것입니다.
df [, "column1"]과 어떻게 다른가요? 또한? margin = 1을 적용하십시오. – Greg
예제는 내가 실제로하고 싶지 않은 것이 었습니다. 데이터 프레임에 자바 스크립트 파일의 데이터로 값을 쓰고 싶었습니다. "적용"의 "여백"에 대한 정보는 +1. –
특정 상황에서 열의 값을 중심으로 이동하려면 행을 반복해야했습니다. 나는 R에서 이것을하는 더 좋은 방법이 있음을 상기시켰다 : http://stackoverflow.com/questions/7746567/how-to-swap-values-between-2-columns – thadk