2016-09-21 5 views
0

1은 내가 이렇게 될 수 있도록 내가 목록을 필터링 할 수 있습니다 어떻게 이름필터 목록>

> x <- c("Test t", "Cuma Nama K", "O", "Test satu dua t") 
> name <- strsplit(x, " ") 
> name 
[[1]] 
[1] "Test" "t" 

[[2]] 
[1] "Cuma" "Nama" "K" 

[[3]] 
[1] "O" 

[[4]] 
[1] "Test" "satu" "dua" "t" 

의 목록을 가지고 NCHAR이있는? 나는이 목록> 1

> name 
[[1]] 
[1] "Test" 

[[2]] 
[1] "Cuma" "Nama" 

[[4]] 
[1] "Test" "satu" "dua" 

답변

2
lapply(name, function(x) x[nchar(x)>1]) 

결과 :

[[1]] 
[1] "Test" 

[[2]] 
[1] "Cuma" "Nama" 

[[3]] 
character(0) 

[[4]] 
[1] "Test" "satu" "dua" 
1

우리는리스트의 요소를 루프, 1 이상의 nchar 커야 요소를 부분 집합 0 그 요소를 제거하기 위해 Filter을 사용할 수 있습니다 NCHAR를 필터링하는 방법을 찾기 위해 노력하고있다 요소

Filter(length,lapply(name, function(x) x[nchar(x) >1 ])) 
#[[1]] 
#[1] "Test" 

#[[2]] 
#[1] "Cuma" "Nama" 

#[[3]] 
#[1] "Test" "satu" "dua" 

우리는 문자열에서 하나 개의 문자와 단어를 제거 할 경우, 우리는 또한

을 분할하지 않고이 작업을 수행 할 수 있습니다
setdiff(gsub("(^|).(|$)", "", x), "") 
#[1] "Test"   "Cuma Nama"  "Test satu dua"