sách gpt4 ai đã đi

r - 对 n*m 矩阵的所有列组合进行函数运算,生成 m*m 结果

In lại 作者:行者123 更新时间:2023-12-01 18:27:49 28 4
mua khóa gpt4 Nike

假设我有一个函数,它接受两个向量并返回一个整数,例如一个向量中也存在另一个向量中的元素数量。喜欢:

f <- function(v1,v2)sum(v1 %in% v2)

如何将该函数应用于 n*m 矩阵中 m 列的所有成对组合。

set.seed(1)
m <- replicate(3, sample(letters[1:10], size = 5))
dimnames(m) <- list(NULL, paste0('c', 1:ncol(m)))

Hiện nay,

> nam
[,1] [,2] [,3]
[1,] "c" "i" "c"
[2,] "d" "j" "b"
[3,] "e" "f" "f"
[4,] "g" "e" "j"
[5,] "b" "a" "e"

并在前两列上取函数:

> f(m[,1], m[,2])
[1] 1 #'e' is shared.

如何对所有列组合执行此操作?结果可能是一个 m*m 矩阵(其中结果围绕对角线对称),或者,它可能是一个长格式数据框,其中包含 v1、v2 和函数结果的列(例如,第一行将是 c1,c23 )

我尝试研究函数 outerexpand.grid 但找不到解决方案。

1 Câu trả lời

sapply(1:3, function(i) sapply(1:3, function(j) f(m[,i], m[,j])))
# [,1] [,2] [,3]
#[1,] 5 1 3
#[2,] 1 5 3
#[3,] 3 3 5

或者以下输出可能更友好

sapply(data.frame(m), function(x1) sapply(data.frame(m), function(x2) f(x1, x2)))
# c1 c2 c3
#c1 5 1 3
#c2 1 5 3
#c3 3 3 5

关于r - 对 n*m 矩阵的所有列组合进行函数运算,生成 m*m 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44709440/

28 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com