r - 连接 R 中的列
问题描述
我的数据集有两列(REF 和 COLOR)。
数据集
> dput(dataset)
structure(list(REF = structure(c(3L, 5L, 3L, 1L, 3L, 3L, 3L,
4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L), .Label = c("BRE", "GAB",
"HID", "RIU", "UNK"), class = "factor"), COLOR = structure(c(3L,
2L, 3L, 4L, 3L, 3L, 3L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 5L
), .Label = c("#01665e", "#4d4d4d", "#80cdc1", "#bf812d", "#f6e8c3"
), class = "factor")), class = "data.frame", row.names = c(NA,
-17L))
>
如何从其他列创建如下所示的颜色列?
REF_COLOR
"BIF" = "#543005",
"BRE" = "#bf812d",
"DIA" = "#dfc27d",
"GAB" = "#f6e8c3",
"GRA" = "#f5f5f5",
"GRN" = "#c7eae5",
"HID" = "#80cdc1",
"RIO" = "#35978f",
"RIU" = "#01665e",
"RVB" = "#003c30",
"RVU" = "#8e0152",
"SAP" = "#276419",
"SOL" = "#2d004b",
"UNK" = "#4d4d4d"
到目前为止,我取得的最大成就是:
> paste(ref, color, sep=" = ")
[1] "HID = #80cdc1", "UNK = #4d4d4d", "BRE = #bf812d", "RIU = #01665e", "GAB = #f6e8c3"
解决方案
这并不像看起来那么简单,需要不止一个操作:
在这里,我先进行双重粘贴,然后进行双重替换:
REF_COLOR <- paste(sub('^|$', '"',
gsub(', ', '", "',
paste0(paste0(df$REF,'" = "', df$COLOR, sep = ""), collapse = ", "))), '"', sep = "")
结果:
REF_COLOR
[1] "\"HID\" = \"#80cdc1\", \"UNK\" = \"#4d4d4d\", \"HID\" = \"#80cdc1\", \"BRE\" = \"#bf812d\", \"HID\" = \"#80cdc1\", \"HID\" = \"#80cdc1\", \"HID\" = \"#80cdc1\", \"RIU\" = \"#01665e\", \"HID\" = \"#80cdc1\", \"HID\" = \"#80cdc1\", \"HID\" = \"#80cdc1\", \"HID\" = \"#80cdc1\", \"HID\" = \"#80cdc1\", \"HID\" = \"#80cdc1\", \"HID\" = \"#80cdc1\", \"HID\" = \"#80cdc1\", \"GAB\" = \"#f6e8c3"
正如@Mr.Flick 所指出的,要查看未转义的值,请使用cat
:
cat(REF_COLOR)
"HID" = "#80cdc1", "UNK" = "#4d4d4d", "HID" = "#80cdc1", "BRE" = "#bf812d", "HID" = "#80cdc1", "HID" = "#80cdc1", "HID" = "#80cdc1", "RIU" = "#01665e", "HID" = "#80cdc1", "HID" = "#80cdc1", "HID" = "#80cdc1", "HID" = "#80cdc1", "HID" = "#80cdc1", "HID" = "#80cdc1", "HID" = "#80cdc1", "HID" = "#80cdc1", "GAB" = "#f6e8c3"
推荐阅读
- mysql - 当默认存储引擎数据库为 MyIsam 时,具有 InnoDB 引擎的表是否会损坏?
- php - auth 用户在重定向方法中返回 null
- intellij-idea - Main-Class 已经在 MANIFEST.MF 中定义了,但是仍然找不到主类错误
- mysql - 删除字符或字符串总数小于10的行mysql
- javascript - 如何自定义电子邮件传输
- hadoop - 删除 /tmp/hive/hive 文件夹是否安全?
- python - 如何使用groupby为所有ID查找当前事件一年内的事件
- c# - 通过 .NET Core WebAPI 的端点公开 TFS 内部版本号
- python - 为什么我无法在 sympy 的方程中得到 'r' 的结果?
- html - 当一个元素被转换隐藏时,如何让 flex child 展开?