을 병합하지 않고 cbind를 통해 목록의 목록, 우리는 예를 들어 목록의 요소로 쌍을 저장하고 싶은 가정R :
하나가 명시 적 참조하지 않고, 연결과 같은 일을 만들려고하면> x <- list()
> x[[1]] <- list(1,2)
> x[[2]] <- list(3,4)
> x
[[1]]
[[1]][[1]]
[1] 1
[[1]][[2]]
[1] 2
[[2]]
[[2]][[1]]
[1] 3
[[2]][[2]]
[1] 4
외부에서의 인덱스는 자연 접근법은 c()
두 번째 인수의 "평탄화"를 방지하는 방법이 있는가
> c(list(list(1,2)),list(3,4))
[[1]]
[[1]][[1]]
[1] 1
[[1]][[2]]
[1] 2
[[2]]
[1] 3
[[3]]
[1] 4
이다 (이 방법에 대한 동기 부여 이하 EDIT 참조)하여 x
생산 연결을 사용 ?
편집 : 의도 한 응용 프로그램을 분명하게해야합니다.
결국 루프를 통과 할 때마다 목록에 쌍을 추가하고 싶습니다. 현재 나는 주 목록에 대한 색인을 유지하여 그 끝에 새로운 쌍을 추가합니다. 그러나 c
을 사용하는 것이 아마 더 자연 스럽습니다. 명시 적으로 인덱스를 사용 그래서 루프는이
index <- 1
l <- list()
for (i in 1:10) {
for (j in (i+1):10) {
if ((i+j)%%2 == 0) {
l[[index]] <- list(i,j)
index <- index + 1
}
}
}
처럼 보일 수 있습니다 그리고 c
를 사용하는 시도가 실패한이
l <- list()
for (i in 1:10) {
for (j in (i+1):10) {
if ((i+j)%%2 == 0)
l <- c(l,list(i,j))
}
}
답변과 같습니다 아래 토미, 여분의 목록 (에 의해 언급 된 바와 같이) 필요 , 그래서 다음 작품 :
l <- list()
for (i in 1:10) {
for (j in (i+1):10) {
if ((i+j)%%2 == 0)
l <- c(l,list(list(i,j)))
}
}
나는 분명히 알아야 할 종류. Tommy는 이것이 일을하는 좋은 방법이 아닐 수도 있다고 지적합니다.
당신이 찾고있는 것이 확실하지 않지만'c (list (1, 2), list (3, 4))'입니까? – Ramnath
일반적으로 실제 문제가 예제 코드와 닮은 경우 목록 끝에 추가하는 것이 올바른 접근법입니다 (R에서 어색한 경우 사용자가 발견 한 것처럼). 어색하게 느껴지는 간단한 작업을 만났을 때 언어가 사용되는 방식으로 문제를 해결하지 않는 것이 좋은 신호입니다. – joran
당신이 즉각적인 문제를 알아 냈기 때문에 기쁘다. 그리고 내가 앞서 말한 것을 다시 말해 줄 것이다 : preallocation. 이 답변은 몇 가지 성능 비교를 보여줍니다 ... 복잡한 기능을 사용하여 최대 몇 분 또는 몇 시간까지 쉽게 풍선을 만들 수 있습니다. 행운을 빕니다! http://stackoverflow.com/questions/4034059/iteratively-constructed-dataframe-in-rx – Chase