2014-09-23 52 views
7

我已經做了功能,這基本上輸出多個長度的字符串,即,例如,提取一個字符向量中的所有最大長度值中的R

"110110" "110" "101" "011" 

現在,我分配函數的輸出在變量a,

a<- c("110110", "110", "101", "011") 

a的類出來是字符。現在,我只想要那些長度最長的字符串。例如,在這個例子中,最大長度是「110110」。所以,我想要那個。我試過使用max命令,但是如果有多個,它只返回一個最大長度的字符串。例如,在這些字符串中,

a <- c("110", "101", "abc", "cab") 

使用max命令僅返回「cab」。但是,我想要所有的最大長度字符串。我該怎麼做?

+0

只是讓我說'a < - c(「110」,「101」,「abc」,「cab」)是一個不好的例子因爲所有字符串都具有相同的長度。 – 2017-06-01 08:24:15

回答

10

要衡量字符串的「長度」,你必須使用類似nchar的東西。如果您想要所有具有最大字符數的元素,您可以使用nchar(a)==max(nchar(a))進行過濾。下面的代碼應該做你正在做的事情:

a <- c("110", "101", "abc", "cab") 

a[nchar(a)==max(nchar(a))] 
[1] "110" "101" "abc" "cab" 
+0

嗨。對不起,但是,因爲它是一個函數的輸出,所以我會執行它。所以,在某些地方,函數返回''「'',即NULL。在這些地方,這段代碼顯示了一條警告消息:In max(nchar(a)):沒有非缺少的參數爲max;返回-Inf'。如何解決這些問題? – Qirohchan 2014-09-23 17:38:21

+0

@Qin當所有元素都是NULL並且它只是一個警告時,會發生這種情況,您可以在這些情況下忽略它,並且結果也是正確的,也是一個NULL向量。 – 2014-09-23 17:43:21

+0

@Qin你也可以用'nzchar'去除零長度條目。或者在函數中,你可以包括行if(any(nzchar(x)))x < - x [nzchar(x)]'或者這些行。當你調用'max'時,這將消除這些警告 – 2014-09-23 18:43:55

相關問題