簡體   English   中英

如何在不帶空格或破折號的字母字符串中重復每個字母的字符串連接?

[英]How to repeat the concatenation of strings per letter in a string of letters with no spaces or with dashes?

以下是我正在使用的數據框的簡化版本,盡管是代表性版本。

df <- rbind( data.frame(masterConfig = rep("ABC", 5), subConfig = rep("xyz", 5)),
            data.frame(masterConfig = rep("BFG", 5), subConfig = rep("i-k", 5)) )

我正在嘗試在上述數據框中生成第三列,分別對應前五行和后五行:

“ ABC x,ABC y,ABC z”

“ BFG i,BFG j,BFG k”

感謝您的幫助!

我們可以寫一個檢查功能if “ - ”出現在subConfig列然后將其分解,並創造了一系列的他們之間的字母或else只是將其分解的每一個字符。

get_broken_letters <- function(x) {
   if (grepl("-", x)) {
     indx <- which(letters %in% strsplit(x, "-")[[1]])
     letters[indx[1]:indx[2]]
   }
   else {
     strsplit(x, "")[[1]]
   }
}

然后針對每行我們使用應用功能sapplypaste他們masterConfig

df$new_column <- sapply(1:nrow(df), function(x) 
      paste(df$masterConfig[x],get_broken_letters(df$subConfig[x]), collapse = " "))

df
#   masterConfig subConfig        new_column
#1           ABC       xyz ABC x ABC y ABC z
#2           ABC       xyz ABC x ABC y ABC z
#3           ABC       xyz ABC x ABC y ABC z
#4           ABC       xyz ABC x ABC y ABC z
#5           ABC       xyz ABC x ABC y ABC z
#6           BFG       i-k BFG i BFG j BFG k
#7           BFG       i-k BFG i BFG j BFG k
#8           BFG       i-k BFG i BFG j BFG k
#9           BFG       i-k BFG i BFG j BFG k
#10          BFG       i-k BFG i BFG j BFG k

數據

df <- data.frame(masterConfig = c(rep("ABC", 5), rep("BFG", 5)), 
       subConfig = c(rep("xyz", 5), rep("i-k", 5)), stringsAsFactors = FALSE)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM