获取字母矢量的字母顺序的第一个和最后一个字母

用户名

我正在做R练习:

编写一个将字符串拆分为字母并根据字母顺序返回最小和最大字母的函数。

这是向量:

cities <- c("New York", "Paris", "London", "Tokyo", "Rio de Janeiro", "Cape Town")

这是我编写的代码:

first_and_last <- function(name){
  name <- gsub (" ", "", name)
  letters <- strsplit(name, split = "")
  c(first = min(letters), last = max(letters)) 
  }

但是,运行它时出现错误:

first_and_last(cities)
#Error in min(letters) (from #4) : invalid 'type' (list) of argument

请让我知道代码中缺少什么?谢谢!

李哲源

我假设您要按元素进行操作,即对于的每个元素cities,请按字母顺序提取第一个和最后一个字母。这是您需要的:

first_and_last <- function(name){
  name <- gsub (" ", "", name)
  myName <- strsplit(name, split = "")
  result <- t(sapply(myName, range))  ## use function `range`
  rownames(result) <- name
  colnames(result) <- c("first", "last")
  return(result)
  }

first_and_last(cities)

#                first last
# New York       "e"   "Y" 
# Paris          "a"   "s" 
# London         "d"   "o" 
# Tokyo          "k"   "y" 
# Rio de Janeiro "a"   "R" 
# Cape Town      "a"   "w" 

我用过功能range()这将返回minmax它是R的内置实现function(x) c(min(x), max(x))


跟进

谢谢,问题解决了。我正在R上在线课程。在他们的解决方案中,他们使用了以下代码行。如果可能的话,请您解释一下,这行代码是什么意思。特别是,双括号部分“ [[1]]”:letters <- strsplit(name, split = "")[[1]]

strsplit返回列表。我们试试看:

strsplit("Bath", split = "")
#[[1]]
#[1] "B" "a" "t" "h"

如果要访问字符向量,则需要[[1]]

strsplit("Bath", split = "")[[1]]
#[1] "B" "a" "t" "h"

只有使用向量,您才能取min/ max例如:

min(strsplit("Bath",split=""))
#Error in min(strsplit("Bath", split = "")) : 
#  invalid 'type' (list) of argument

min(strsplit("Bath",split="")[[1]])
#[1] "a"

我相信您看到的在线示例仅包含一个字符。如果您有矢量输入,例如:

strsplit(c("Bath", "Bristol", "Cambridge"), split = "")
#[[1]]
#[1] "B" "a" "t" "h"

#[[2]]
#[1] "B" "r" "i" "s" "t" "o" "l"

#[[3]]
#[1] "C" "a" "m" "b" "r" "i" "d" "g" "e"

并且您想要申请range每个列表元素,sapply将很方便:

sapply(strsplit(c("Bath", "Bristol", "Cambridge"), split = ""), range)
#     [,1] [,2] [,3]
#[1,] "a"  "B"  "a" 
#[2,] "t"  "t"  "r" 

first_and_last上面的功能基于sapply但是,为了进行漂亮的演示,我已经对结果进行了转置并指定了行/列的名称。


天哪,我只是意识到您已经在[[]]2天前问了一个问题Function中的Double Bracket [[]]那你为什么还要问我解释呢???

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取索引的第一个字母?

来自分类Dev

Django获取字符串的第一个字母

来自分类Dev

从列中获取字符串的第一个字母

来自分类Dev

Python如何大写单词的第一个字母和最后三个字母

来自分类Dev

如何使用Vim在第一个字母和最后一个字母之后放置几个字符?

来自分类Dev

截断UILabel和UITextField中的第一个字母而不是最后一个字母?

来自分类Dev

而,如果和for循环。Python上的第一个字母,最后一个字母游戏

来自分类Dev

使用String方法将Java中的第一个和最后一个字母大写

来自分类Dev

大写每个单词的第一个和最后一个字母不起作用的功能

来自分类Dev

如何从字符串中删除第一个和最后一个字母

来自分类Dev

如何大写字符串的第一个和最后一个字母?

来自分类Dev

Elasticsearch,仅索引第一个和最后一个字母,'abc'=>'a''c'

来自分类Dev

Java - 单词加扰器[保留第一个和最后一个字母]

来自分类Dev

词组的第一个字母

来自分类Dev

删除每行的第一个字母

来自分类Dev

匹配单词的第一个字母

来自分类Dev

获取字符串的第一个字符,以从名称中获取首字母

来自分类Dev

如何获取字符串中的n个最后一个字母

来自分类Dev

我最后一个字中的第一个字母怎么被截断?

来自分类Dev

获取字符串出现次数最多的第一个字母

来自分类Dev

替换字符串中所有字母减去Java中的第一个和最后一个字母

来自分类Dev

获取python中每个2个字母的单词的第一个字母

来自分类Dev

如果使用PHP删除文本的第一个单词的'n',如何删除最后一个单词和最后一个字母

来自分类Dev

MySQL SELECT单词的第一个字母顺序搜索

来自分类Dev

查找字符串中的第一个到最后一个字母

来自分类Dev

大写第一个字母,小写其余字母,例外

来自分类Dev

如果第一个字母是R中的特定字母,则创建新列

来自分类Dev

大写第一个字母,小写其余字母,例外

来自分类Dev

特殊字符或字母后的第一个字母大写

Related 相关文章

  1. 1

    获取索引的第一个字母?

  2. 2

    Django获取字符串的第一个字母

  3. 3

    从列中获取字符串的第一个字母

  4. 4

    Python如何大写单词的第一个字母和最后三个字母

  5. 5

    如何使用Vim在第一个字母和最后一个字母之后放置几个字符?

  6. 6

    截断UILabel和UITextField中的第一个字母而不是最后一个字母?

  7. 7

    而,如果和for循环。Python上的第一个字母,最后一个字母游戏

  8. 8

    使用String方法将Java中的第一个和最后一个字母大写

  9. 9

    大写每个单词的第一个和最后一个字母不起作用的功能

  10. 10

    如何从字符串中删除第一个和最后一个字母

  11. 11

    如何大写字符串的第一个和最后一个字母?

  12. 12

    Elasticsearch,仅索引第一个和最后一个字母,'abc'=>'a''c'

  13. 13

    Java - 单词加扰器[保留第一个和最后一个字母]

  14. 14

    词组的第一个字母

  15. 15

    删除每行的第一个字母

  16. 16

    匹配单词的第一个字母

  17. 17

    获取字符串的第一个字符,以从名称中获取首字母

  18. 18

    如何获取字符串中的n个最后一个字母

  19. 19

    我最后一个字中的第一个字母怎么被截断?

  20. 20

    获取字符串出现次数最多的第一个字母

  21. 21

    替换字符串中所有字母减去Java中的第一个和最后一个字母

  22. 22

    获取python中每个2个字母的单词的第一个字母

  23. 23

    如果使用PHP删除文本的第一个单词的'n',如何删除最后一个单词和最后一个字母

  24. 24

    MySQL SELECT单词的第一个字母顺序搜索

  25. 25

    查找字符串中的第一个到最后一个字母

  26. 26

    大写第一个字母,小写其余字母,例外

  27. 27

    如果第一个字母是R中的特定字母,则创建新列

  28. 28

    大写第一个字母,小写其余字母,例外

  29. 29

    特殊字符或字母后的第一个字母大写

热门标签

归档