簡體   English   中英

R中的向量,使用兩個向量中的分量創建一個新向量

[英]Vectors in R, using the components in two vectors to create a new vector

所以我有一個向量代表開始時間( trt.start )和結束時間( trt.end )。 每個開始時間代表一次處理(需要 400 天),向量trt.end的相應位置代表結束。

trt.start = c(10000,10090,10180,10270, 10360) 
trt.end = c(trt.start + 400)

有沒有辦法(無需硬編碼)創建一個新的向量來表示每次治療的持續時間? 所以會導致:

c(10000:10400, 10090:10490, 10180:10580, 10270:10670, 10360:10760)

我希望能夠在沒有硬編碼的情況下做到這一點,因為trt.start向量會改變值。

謝謝!

R ,我們可以使用Map獲取list中對應向量的序列,然后unlist list以創建單個vector

v1 <- unlist(Map(`:`, trt.start, trt.end))
length(v1)
#[1] 2005

如果我們需要一個string

v1 <- sprintf("%d:%d", trt.start, trt.end)
v1
#[1] "10000:10400" "10090:10490" "10180:10580" "10270:10670" "10360:10760"

paste

v1 <- paste0(trt.start, ":", trt.end)
v1  
#[1] "10000:10400" "10090:10490" "10180:10580" "10270:10670" "10360:10760"

或矢量的選擇是rep licate的“trt.start”,然后用值序列添加

v2 <- rep(trt.start, each = 401) + seq_len(401) -1
all.equal(v2, v1)
#[1] TRUE

暫無
暫無

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

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