cbind名單我有data.frame有效的方式來通過團體data.table
數據
data = structure(list(mystring = c("AASDAASADDLKJLKADDLKKLLKJLJADDLJLKJLADLKLADD",
"ASDSDFJSKADDKJSJKDFKSADDLKJFLAK"), class = c("cat", "dog")), .Names = c("mystring",
"class"), row.names = c(NA, -2L), class = "data.frame")
它看起來像
#> dtt1
# mystring class
#1 AASDAASADDLKJLKADDLKKLLKJLJADDLJLKJLADLKLADD cat
#2 ASDSDFJSKADDKJSJKDFKSADDLKJFLAK dog
我正在尋找的開始和考慮class
作爲組的mystring
下字符串的前20個字符中的模式「ADD」的結束位置。
我使用stringr
包str_locate
這樣做。這是我嘗試
setDT(dtt1)[,
cbind(list(str_locate_all(substr(as.character(mystring), 1, 20),"ADD")[[1]][,1]),
list(str_locate_all(substr(as.character(mystring), 1, 20),"ADD")[[1]][,2])),
by = class]
這讓我所需的輸出
# class V1 V2
#1: cat 8 10
#2: cat 16 18
#3: dog 10 12
問題: 我想知道,如果這是一個標準的辦法或這樣可以更有效的進行方式。 str_locate
給在單獨的列匹配模式的start
和end
職位,我把它們放在單獨的列表cbind
他們一起data.table
?另外,如何在此處指定colnames
用於結合columns
?
'由= class'需要? – Khashaa
@Khashaa是在問題的標題中。我想通過小組 –