r - 在 R 中查找数据框中的所有唯一字符

标签 r

我想知道从 R 数据框中查找所有唯一字符的最有效方法是什么。

例如:- [0-9,a-z,A-Z,",","$","&","#"等]

> k
  cola colb
1 1&3#   %^
2 A4C%  89&

我期望的输出是一个包含所有唯一字符(包括特殊字符)的列表。即123#%^AC89&

最佳答案

这并没有什么真正有效的,但是......在来自 ggplot2 库的 diamonds 数据集上进行演示,

library(ggplot2)
unique(unlist(lapply(diamonds, function(x) unlist(strsplit(as.character(x), "")))))
#  [1] "0" "." "2" "3" "1" "9" "4" "6" "5" "8" "7" "I" "d" "e" "a" "l" "P" "r" "m" "i" "u" "G" "o"
# [24] "V" "y" " " "F" "E" "J" "H" "D" "S"

如果您想知道每种有多少?

table(unlist(lapply(diamonds, function(x) unlist(strsplit(as.character(x), "")))))
#             .      0      1      2      3      4      5      6      7      8      9      a 
#  12082 261929  81785 142173 135042 108355 121267 157242 161862  91438  71904  67144  23161 
#      d      D      e      E      F      G      H      i      I      J      l      m      o 
#  38539   6775  47424   9797  12942  28280   8304  15401  51763   2808  21551  27582  33976 
#      P      r      S      u      V      y 
#  13791  27483  51409  13791  49953  12082 

(这实际上是 akrun 的答案......在我看到他的评论编辑之前发布。)

使用示例框架:

k <- data.frame(cola = c("1&3#", "A4C%"), colb = c("%^", "89&"), stringsAsFactors = FALSE)
unique(unlist(lapply(k, function(x) unlist(strsplit(as.character(x), "")))))
#  [1] "1" "&" "3" "#" "A" "4" "C" "%" "^" "8" "9"

如果您希望它们位于排序的无空格字符串中,

paste(sort(unique(unlist(lapply(k, function(x) unlist(strsplit(as.character(x), "")))))), collapse = "")
# [1] "#%&^13489AC"

由于您的问题表明您正在考虑在某个正则表达式中使用它,因此您可以将其放在括号中。我不会经历查找字符范围的痛苦(例如,AD-GW-Z24-9),因为这只会给你带来很少的正则表达式效率,但会花费更多的精力来生成。

关于r - 在 R 中查找数据框中的所有唯一字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61131426/

相关文章:

r - 使用 visNetwork 更改字体的颜色Awesome 图标

R - 计算自具有多个事件类型和 ID 的上次事件以来耗时

r - 使用 source 与 parse 和 eval 相比有哪些注意事项?

r - 使用fir {seewave}选择音频文件的频率范围

r - 绘制二分加折线图比较

read.table() 和 read.csv 都在 Rmd 中出错

r - 聚合重复测量数据的有效方法

RGDAL安装错误: libnetcdf. so.6:无法打开共享对象文件:没有这样的文件或目录

r - 如何使用数据框中的当前行值检查前一行值

r - 在R中的garchFit中tryCatch