Yanıtlar:
Yapıştır işlevi içinde boş bir daraltma bağımsız değişkeni kullanmayı deneyin :
paste(sdata, collapse = '')
Matt'in cevabı kesinlikle doğru cevaptır. Ancak, komik rahatlama amaçları için alternatif bir çözüm:
do.call(paste, c(as.list(sdata), sep = ""))
collapse
parametre olmasaydı bu aslında en şık çözüm olurdu . çok yakın zamanda aslında çok benzer bir şey yapmak zorunda olsaydı çok komedi rahatlama :)
stri_paste
Fonksiyonu aşağıdaki gibi paketteki collapse
parametre ile kullanabilirsiniz stringi
:
stri_paste(letters, collapse='')
## [1] "abcdefghijklmnopqrstuvwxyz"
Ve bazı kriterler:
require(microbenchmark)
test <- stri_rand_lipsum(100)
microbenchmark(stri_paste(test, collapse=''), paste(test,collapse=''), do.call(paste, c(as.list(test), sep="")))
Unit: microseconds
expr min lq mean median uq max neval
stri_paste(test, collapse = "") 137.477 139.6040 155.8157 148.5810 163.5375 226.171 100
paste(test, collapse = "") 404.139 406.4100 446.0270 432.3250 442.9825 723.793 100
do.call(paste, c(as.list(test), sep = "")) 216.937 226.0265 251.6779 237.3945 264.8935 405.989 100
Daha kolay yazdırma için adlandırılmış veya adlandırılmamış değerler listesini tek bir dizeye daraltan küçük bir yardımcı program işlevi. Ayrıca kod satırını da yazdıracaktır. Bu benim geliyor R liste örnekler sayfasında.
Adlandırılmış veya adlandırılmamış bazı listeler oluşturun:
# Define Lists
ls_num <- list(1,2,3)
ls_str <- list('1','2','3')
ls_num_str <- list(1,2,'3')
# Named Lists
ar_st_names <- c('e1','e2','e3')
ls_num_str_named <- ls_num_str
names(ls_num_str_named) <- ar_st_names
# Add Element to Named List
ls_num_str_named$e4 <- 'this is added'
Adlı veya adsız listeyi dizeye dönüştürecek bir işlev şunlardır:
ffi_lst2str <- function(ls_list, st_desc, bl_print=TRUE) {
# string desc
if(missing(st_desc)){
st_desc <- deparse(substitute(ls_list))
}
# create string
st_string_from_list = paste0(paste0(st_desc, ':'),
paste(names(ls_list), ls_list, sep="=", collapse=";" ))
if (bl_print){
print(st_string_from_list)
}
}
İşlevi önceden oluşturulan listelerle test etme:
> ffi_lst2str(ls_num)
[1] "ls_num:=1;=2;=3"
> ffi_lst2str(ls_str)
[1] "ls_str:=1;=2;=3"
> ffi_lst2str(ls_num_str)
[1] "ls_num_str:=1;=2;=3"
> ffi_lst2str(ls_num_str_named)
[1] "ls_num_str_named:e1=1;e2=2;e3=3;e4=this is added"
İşlevi liste öğelerinin alt kümesiyle test etme:
> ffi_lst2str(ls_num_str_named[c('e2','e3','e4')])
[1] "ls_num_str_named[c(\"e2\", \"e3\", \"e4\")]:e2=2;e3=3;e4=this is added"
> ffi_lst2str(ls_num[2:3])
[1] "ls_num[2:3]:=2;=3"
> ffi_lst2str(ls_str[2:3])
[1] "ls_str[2:3]:=2;=3"
> ffi_lst2str(ls_num_str[2:4])
[1] "ls_num_str[2:4]:=2;=3;=NULL"
> ffi_lst2str(ls_num_str_named[c('e2','e3','e4')])
[1] "ls_num_str_named[c(\"e2\", \"e3\", \"e4\")]:e2=2;e3=3;e4=this is added"
sdata
aynı uzunlukta veya değişken uzunlukta dizelerden herhangi birini içerebilirse,paste(sdata, sep = '', collapse = '')
beklenmedik sonuçlardan kaçınmak için kullanılması gerektiğini unutmayın.