Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符串转换为在R中包含1到长度(字符串)元素的唯一排列列表_R_String_Dataframe_Permutation - Fatal编程技术网

将字符串转换为在R中包含1到长度(字符串)元素的唯一排列列表

将字符串转换为在R中包含1到长度(字符串)元素的唯一排列列表,r,string,dataframe,permutation,R,String,Dataframe,Permutation,我尝试将一个字符串拆分为组成该字符串的唯一字符排列 strings <- c("DOG", "CAT", "BALL") string length output DOG 3 D, O, G, DO, DG, OG, DOG CAT 3 C, A, T, CA, CT, AT, CAT BALL 4 B, A, L, BA, BL, BAL string

我尝试将一个字符串拆分为组成该字符串的唯一字符排列

strings <- c("DOG", "CAT", "BALL")

string   length  output

DOG      3       D, O, G, DO, DG, OG, DOG
CAT      3       C, A, T, CA, CT, AT, CAT
BALL     4       B, A, L, BA, BL, BAL


strings这里是一个基本的R方法。使用
strsplit
将每个字符串拆分为单个(和唯一)字母。然后,对于每组字母,使用
seq_-along
从1到字符串长度,并使用
combn
查看字母组合。结果被放入每个组合的列表中,然后粘贴在一起

strings <- c("DOG", "CAT", "BALL")

data.frame(
  string = strings,
  length = nchar(strings),
  output = sapply(strings,
       function(s) { 
         x <- unique(strsplit(s, "")[[1]])
         toString(
           paste(
             sapply(
               do.call("c", lapply(seq_along(x), function(i) combn(x, i, list))), 
               paste, 
               collapse = "")
             )
           )
       }
  ), 
row.names = NULL)
你可以做:

fun <- function(x){
  y <- unique(strsplit(x, "")[[1]])
  toString(unlist(sapply(seq(y), combn, x = y, paste0, collapse = "")))
}

data.frame(strings, length=nchar(strings), output=sapply(strings,fun,USE.NAMES = FALSE))
 strings length                   output
1     DOG      3 D, O, G, DO, DG, OG, DOG
2     CAT      3 C, A, T, CA, CT, AT, CAT
3    BALL      4 B, A, L, BA, BL, AL, BAL

fun您是否只使用唯一值?如果你有像“妈妈”这样的东西会怎么样?结果会是什么?会是妈妈!
fun <- function(x){
  y <- unique(strsplit(x, "")[[1]])
  toString(unlist(sapply(seq(y), combn, x = y, paste0, collapse = "")))
}

data.frame(strings, length=nchar(strings), output=sapply(strings,fun,USE.NAMES = FALSE))
 strings length                   output
1     DOG      3 D, O, G, DO, DG, OG, DOG
2     CAT      3 C, A, T, CA, CT, AT, CAT
3    BALL      4 B, A, L, BA, BL, AL, BAL