2016-08-17 112 views
0

我想從列中讀取數據,然後將我想要的信息連接成一個字符串。r-concatenate列表中的n個元素

到目前爲止,我寫了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 

我的輸出應該是:

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是你的性格列有許多元素。我做了一個簡單的測試與

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"