[英]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.