简体   繁体   English

连接 R 中的列

[英]Concatenate columns in R

My dataset has two columns (REF and COLOR).我的数据集有两列(REF 和 COLOR)。

Dataset数据集

> 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))
> 

How can I create a color column as shown below from the other columns?如何从其他列创建如下所示的颜色列?

   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"

The most I have achieved so far is this:到目前为止,我取得的最大成就是:

> paste(ref, color, sep=" = ")
[1] "HID = #80cdc1", "UNK = #4d4d4d", "BRE = #bf812d", "RIU = #01665e", "GAB = #f6e8c3"

This is less trivial than it may seem, requiring more than one operation:这并不像看起来那么简单,需要不止一个操作:

Here, I first do a double paste and then a double substitution:在这里,我先进行双重粘贴,然后进行双重替换:

REF_COLOR <- paste(sub('^|$', '"', 
                       gsub(', ', '", "', 
                            paste0(paste0(df$REF,'" = "', df$COLOR, sep = ""), collapse = ", "))), '"', sep = "")

Result:结果:

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"

As noted by @Mr.Flick, to see the unescaped values, use cat :正如@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"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM