2014-03-04 2 views
0

다음은이 데이터 집합입니다. 이것은 10 개의 데이터 프레임 목록이며 각 데이터 프레임에는 다른 요소가 들어 있습니다. 내가 원하는 것은 각 데이터 프레임 내의 문자 객체를 분할하여 문자가 아닌 객체 내의 숫자 만 표시하도록하는 것입니다. 이후에 각 데이터 프레임의 숫자가 짝수 또는 홀수인지 확인하기 위해 테스트 할 것이므로 아마도 정수 벡터로 바꿔야 할 것입니다. 예컨대 제 1 데이터 프레임에 대해,이 제 2 데이터 프레임에 대한 4 반환 그래서, 그것은 4 12 등 등 목록의 데이터 프레임 배수로 각 문자 개체 나누기

$control 
[1] "A4" 

$control 
[1] "G8" 

$pq 
[1] "A4" "G12" 

$docetaxel 
[1] "G8" 

$docetaxel_b 
[1] "A1" "A2" "A3" "A4" "A5" "A6" "A7" "A8" "A9" "A10" "A11" "A12" "B1" "B2" "B3" "B4" "B5" "B6" "B7" "B8" 
[21] "B9" "B10" "B11" "B12" "C1" "C2" "C3" "C4" "C5" "C6" "C7" "C8" "C9" "C10" "C11" "C12" "D1" "D2" "D3" "D4" 
[41] "D5" "D6" "D7" "D8" "D9" "D10" "D11" "D12" "E1" "E2" "E3" "E4" "E5" "E6" "E7" "E8" "E9" 

$docetaxel 
[1] "E9" "E10" "E11" "E12" "F1" "F2" "F3" "F4" "F5" "F6" "F7" "F8" "F9" "F10" "F11" "F12" "G1" "G2" "G3" "G4" 
[21] "G5" "G6" "G7" "G8" "G9" "G10" "G11" "G12" "H1" "H2" "H3" "H4" "H5" "H6" "H7" "H8" "H9" "H10" "H11" "H12" 

$dactinomycin 
[1] "E12" 

$cisplatin 
[1] "F8" 

$cisplatin_b 
[1] "A1" "A2" "A3" "A4" "A5" "A6" 

$cisplatin 
[1] "A6" "A7" "A8" "A9" "A10" "A11" "A12" "B1" "B2" "B3" "B4" "B5" "B6" "B7" "B8" "B9" "B10" "B11" "B12" "C1" 
[21] "C2" "C3" "C4" "C5" "C6" "C7" "C8" "C9" "C10" "C11" "C12" "D1" "D2" "D3" "D4" "D5" "D6" "D7" "D8" "D9" 
[41] "D10" "D11" "D12" "E1" "E2" "E3" "E4" "E5" "E6" "E7" "E8" "E9" "E10" "E11" "E12" "F1" "F2" "F3" "F4" "F5" 
[61] "F6" "F7" "F8" "F9" "F10" "F11" "F12" "G1" "G2" "G3" "G4" "G5" "G6" "G7" "G8" "G9" "G10" "G11" "G12" "H1" 
[81] "H2" "H3" "H4" "H5" "H6" "H7" "H8" "H9" "H10" "H11" "H12" 

가 미리 감사 반환, 제 8.을 반환 !

답변

1

귀하의 목록에 적어도 데이터 프레임이 포함되어 있다고 생각하지 않습니다. 다음은 문자를 제거하는 방법입니다. 이것은 귀하의 데이터의 작은 하위 집합입니다.

lst <- list(control="G8", pq=c("A4", "G12"), docetaxel=c("G8"), docetaxel_b=c("A1", "A2")) 
lapply(lst, function(x) as.numeric(gsub("[^0-9]", "", x))) 

는 생산 :

$control 
[1] 8 

$pq 
[1] 4 12 

$docetaxel 
[1] 8 

$docetaxel_b 
[1] 1 2 

는 기본적으로, 우리가 gsub와 수 ("[^0-9]")가 아닌 다음 숫자로 변환하는 것을 없애. lapply 내부의 기능을 수정하여 값이 %% 2과 같이 짝수인지 홀수인지를 쉽게 확인할 수 있습니다.하지만 정확히 알고 싶은 것 (평균 횟수, 확률 등)을 모르면 제공 할 수 없습니다. 추가 지침.

+0

고마워요! 그래서 저는 그렇게했습니다. 그리고 lapply (lst, function (x) x %% 2 == 0)를했습니다. 그 다음 나는 lapply (lst, function (x) all (x))를 사용하여 어느 것이 짝수인지 만 확인했다. 이제 마지막으로 적용한 함수에 대해 TRUE를 반환 한 데이터 프레임을 제거하려고합니다. 따라서 숫자가 짝수 인 경우 원본 데이터 10 개 목록에서 삭제하려고합니다. 내가 어떻게 그럴 수 있니? – hj14

+0

원래 데이터가'lst'에 있다고 가정하고, true와 false를 가진 최종 데이터가'lst2'에 있다면, lst [unlist (lst2)] – BrodieG

+0

그러면 TRUE 인 것들이 나에게 주어집니다. 숫자가 짝수). 내가 옳지 않은 것 (숫자가 짝수가 아닌 것)을 반환 할 수 있도록 그것을 어떻게 조정할 수 있습니까? – hj14

관련 문제