在R中提取字符向量中所有的最大长度值

12
我已经编写了一个函数,基本上会输出多个长度不同的字符串,例如:
"110110" "110"    "101"    "011" 

现在,我将函数的输出分配给变量a,

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

a的类别是字符。现在,我只想要那些具有最大长度的字符串。例如,在此示例中,“110110”的长度最大。所以,我只要它。我尝试使用max命令,但如果有多个最大长度的字符串,它只返回一个。例如,在像这样的字符串中,

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

使用max命令只返回 "cab",但是我想要所有最大长度的字符串。我该怎么做?


2
请允许我指出,a <- c("110", "101", "abc", "cab") 这个例子很差,因为所有字符串的长度都相同。 - U. Windl
1个回答

16

要测量字符串的“长度”,您需要使用类似于nchar的东西。如果您想要所有具有最大字符数的元素,则可以使用nchar(a)== max(nchar(a))进行过滤。以下代码应该可以实现您所尝试的操作:

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

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

嗨。抱歉,由于这是函数的输出,我将执行此操作。因此,在某些地方,该函数返回 "",即 NULL。在这些地方,此代码会显示警告消息 In max(nchar(a)) : no non-missing arguments to max; returning -Inf。如何解决这些问题? - Qirohchan
@Qin 当所有元素都为NULL时,这种情况会发生,并且只是一个警告,你可以在这些情况下忽略它,结果将是正确的,也是一个NULL向量。 - Carlos Cinelli
@Qin,您还可以使用nzchar函数删除长度为零的条目。或者在函数中,您可以包含以下行:if(any(nzchar(x))) x <- x[nzchar(x)]或类似的内容。这将在调用max时消除那些警告。 - Rich Scriven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接