我有以下示例格式的data.table。如何將不同的多參數函數應用於data.table的每一行?
dt <- data.table(l = c("apple","ball","cat"),
m = c(1,2,3),
n = c("I ate apple", "I played ball", "cat ate pudding"))
我想申請sub
爲與圖案從另一列(l
)今後各行的列(n
)。我將如何做到這一點?
我找的是輸出,
l m n o
1: apple 1 I ate apple I ate
2: ball 2 I played ball I played
3: cat 3 cat ate pudding ate pudding
我一直在使用這種方法mapply(do.call, list(sub), ...)
與內data.table賦值運算符,但參數sub
(模式,替換字符串)必須嘗試do.call
的嵌套列表,我堅持如何正確寫入。
爲什麼不'DT [,地圖(子,午, '',N)]'?編輯:這將給我一個有名的向量/列表,所以我們真正想要的是將列表中的返回值封裝爲'dt [,o:=(Map(sub,l,'',n))]] – Shape
@Shape謝謝您!我的方法現在似乎不必要的複雜。我試圖想出一種方法,而不是'sub',我可以有一個不同的函數列表。不過,您的代碼在我的情況下完成了這項工作。如果您想將其作爲答案發布,請繼續。 – Naumz
@Shape我同意你應該發佈。我會用'dt [,mapply(sub,sprintf(「?%s?」,l),「」,n,USE)。NAMES = FALSE)] - 處理名稱問題,以及這些模式可能在它們周圍有空格(OP大概也希望刪除)。 – Frank