[英]R: Use dplyr::mutate/dplyr::transmute with a function which acts on an entire row
我有一個數據框。 為了論證,我們假設它是datasets::women
數據框。 我想通過將函數應用於每一行來從框架創建矢量。
看來,通常的方式做到這一點是使用dplyr
並調用mutate
或transmute
,例如:
dplyr::transmute(women, some_index = 2 * height + weight)
太好了:行得通。 但是,如果我將some_index
的計算結果some_index
到對行起作用的函數中,該some_index
:
calc_some_index <- function(woman) {
2 * woman$height + woman$weight
}
有什么方法可以調用mutate
/ transmute
以便它在其輸入的每一行上都調用此函數?
當然,如果我打電話給我,我會看到正確的結果
dplyr::transmute(women, some_index=calc_some_index(women))
但是我相信,這只是通過將預先計算的矢量細分到transmute
調用中來“作弊”。 例如,如果我打電話,那是行不通的:
dplyr::transmute(head(women, n=10), some_index=calc_some_index(women))
我認為您正在發生尺寸錯誤。
如果我做
library(dplyr)
transmute(head(women, n=10),
some_index=calc_some_index(head(women,10)))
然后它起作用(代碼中的錯誤抱怨大小不同)
或者,您可以使用管道,它可以工作:
head(women, 10) %>%
transmute(calc_some_index(.))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.