2016-08-17 9 views
0

列からデータを読み取り、希望の情報を文字列に連結しようとしています。リストからn個の要素をr連結します。

これまでのところ、1つの文字列入力に対してRスクリプトが成功したと書いてありましたが、n要素に対してはそれを行うことはできません。

reprows <- strsplit("Day1_XExp2B3_500x_Y_Z", "_", fixed = T) 
lenreprows <- length(reprows[[1]]) 
temprepnamelisttopaste <- c(2:(lenreprows-2)) 
temprepname <- paste(sapply(reprows[temprepnamelisttopaste]),collapse='.') 

データは、各行に次のようになります。

Day1_XExp2B3_500x_Y_Z 

私の出力は次のようになります。

xは多くのあなたの文字列である
XExp2B3.500x 

答えて

2

どの程度

## a function for re-concatenation 
rc <- function (u) paste0(u[2:(length(u)-2L)], collapse = ".") 
## main code 
unlist(lapply(strsplit(x, "_", fixed = T), rc)) 

要素。私は

x <- rep("Day1_XExp2B3_500x_Y_Z", 2) 

で簡単なテストを行い、コードが

#[1] "XExp2B3.500x" "XExp2B3.500x" 

が正常に動作しているように見えますができます。

1

strsplitは、ベクトルを渡すときにリストを生成するので、各結果を操作するには*apply関数が必要です。正規表現は、文字列について知っていることに応じて、より簡単なオプションかもしれません:

x <- c("Day1_XExp2B3_500x_Y_Z", "Day1_XExp2B3_500x_Y_Z") 

sub("\\w+_(\\w+)_(\\w+)_._.", "\\1.\\2", x) 
## [1] "XExp2B3.500x" "XExp2B3.500x" 
関連する問題