从每一行中的所有变量创建一个矩阵
Create a matrix from all variables in each row
我有一个存储一组向量化矩阵的数据框。也就是说,在每一行中,我都有与矩阵中的元素对应的 NxM 个变量。
给定这个数据框,我想对存储在每一行中的矩阵应用一个函数,然后将结果存储在一个新变量中。
一种简单的方法是指定 NxM 变量的名称。例如,如果我要应用的函数只是元素的总和(在实际情况下它计算该矩阵的可能性):
library(dplyr)
cars %>% rowwise() %>% mutate(matrix=sum(matrix(c(speed,dist), nrow=1, ncol=2)))
但是由于我的矩阵的维度可能会从一个实验变为另一个实验,并且由于这个维度通常太大而无法枚举所有变量,所以我想要一个通用的解决方案。
我试试
library(dplyr)
cars %>% rowwise() %>% mutate(matrix=sum(matrix(everything(), nrow=1, ncol=2)))
(在这个例子中,ncol 和 nrow 应该适应当前的变量数量,但我可以手动完成。)
但这会引发错误:
Error in mutate_impl(.data, dots) : Evaluation error: No tidyselect
variables were registered.
有简单的方法吗?
您可以使用旧的 apply
函数:
library(dplyr)
cars %>% mutate(matrix = apply(., MARGIN = 1, function(x)
sum(matrix(x, nrow = 1, ncol = 2))))
purrrlyr
-包可能有用
get_matrix_sum <- function(x) {x %>% as.matrix() %>% sum()}
cars %>% purrrlyr::by_row(..f = get_matrix_sum, .collate = "rows", .to = "matrix")
我有一个存储一组向量化矩阵的数据框。也就是说,在每一行中,我都有与矩阵中的元素对应的 NxM 个变量。
给定这个数据框,我想对存储在每一行中的矩阵应用一个函数,然后将结果存储在一个新变量中。
一种简单的方法是指定 NxM 变量的名称。例如,如果我要应用的函数只是元素的总和(在实际情况下它计算该矩阵的可能性):
library(dplyr)
cars %>% rowwise() %>% mutate(matrix=sum(matrix(c(speed,dist), nrow=1, ncol=2)))
但是由于我的矩阵的维度可能会从一个实验变为另一个实验,并且由于这个维度通常太大而无法枚举所有变量,所以我想要一个通用的解决方案。
我试试
library(dplyr)
cars %>% rowwise() %>% mutate(matrix=sum(matrix(everything(), nrow=1, ncol=2)))
(在这个例子中,ncol 和 nrow 应该适应当前的变量数量,但我可以手动完成。)
但这会引发错误:
Error in mutate_impl(.data, dots) : Evaluation error: No tidyselect variables were registered.
有简单的方法吗?
您可以使用旧的 apply
函数:
library(dplyr)
cars %>% mutate(matrix = apply(., MARGIN = 1, function(x)
sum(matrix(x, nrow = 1, ncol = 2))))
purrrlyr
-包可能有用
get_matrix_sum <- function(x) {x %>% as.matrix() %>% sum()}
cars %>% purrrlyr::by_row(..f = get_matrix_sum, .collate = "rows", .to = "matrix")