2014-09-23 63 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

相关问题