2017-03-28 8 views
0

중첩리스트가있다.리스트의 엘리먼트는 string이다. 그래서 구조는 ... 등랩 드롭과 엘레멘트를 사용하는 중첩리스트의 엘리먼트

> lapply(DVHlimits, function(x) laply (x, function(x) laply(x, function(x) length(x)))) 
[[1]] 
     1 2 3 4 5 6 7 8 
[1,] 1 1 1 1 1 1 1 1 
[2,] 1 1 1 1 1 1 1 1 
[3,] 1 1 1 1 1 1 1 1 
[4,] 1 1 1 1 1 1 1 1 
[5,] 1 1 1 1 1 1 1 1 

[[2]] 
     1 2 3 4 5 6 7 
[1,] 1 1 1 1 1 1 1 
[2,] 1 1 1 1 1 1 1 
[3,] 1 1 1 1 1 1 1 
[4,] 1 1 1 1 1 1 1 

[[3]] 
    1 2 3 4 5 6 7 
[1,] 1 1 1 1 1 1 1 
[2,] 1 1 1 1 1 1 1 

......

내가 (8 번째 요소가있는 경우) 하위 목록의 각에서 8 번째 요소를 삭제한다 싶은 사람이 말할 수 있습니다 내가 그들을 어떻게 제거 할까?

이 내가 생각 해낸 해결책이다, 당신의 제안을 당신에게

+0

'dput'을 사용하여 재현 가능한 예제를 보여주십시오. 원래 예제를 모르므로 예상 한 내용이 명확하지 않습니다. – akrun

+0

내가 이해 한 바로는'lapply '가 일부 "행" 권리?. '예'라면 'lapply'는 항상 입력과 동일한 길이의 목록을 반환합니다. 그러나 좋은 소식은 ** 기능 **을 사용자 정의하고 원하는 데이터를 건너 뛰는 조건을 추가하는 것입니다. 여기를 참조하십시오 http://stackoverflow.com/questions/31543307/r-lapply-function-skipping-the-current-function-loop – Misaki

답변

0

감사를드립니다.

# Create a function which can be used with lapply 
cleanColls <- function(x) { 
    x <- x[c(-1, -8)] 
} 

DVHlimits <- lapply(DVHlimits, function(x) lapply(x, function(x) cleanColls(x))) 

당신도 알 수 있듯이 각 하위 목록의 첫 번째 요소도 삭제했습니다. 최종 결과는 각 하위 목록에 현재 6 개의 요소 만 있고, 이제는 모두 내가 원하는 것과 동일한 길이가되었습니다.