簡體   English   中英

R:使用dplyr :: mutate / dplyr :: transmute和作用於整行的函數

[英]R: Use dplyr::mutate/dplyr::transmute with a function which acts on an entire row

我有一個數據框。 為了論證,我們假設它是datasets::women數據框。 我想通過將函數應用於每一行來從框架創建矢量。

看來,通常的方式做到這一點是使用dplyr並調用mutatetransmute ,例如:

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.

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