> set.seed(123) # 设置随机数种子,保证每次运行结果一致 > n_groups <- 10000 # 组数 > n_obs <- 25 # 每组观察值数量 > x <- matrix(rnorm(n_groups * n_obs), ncol = n_obs) # 生成X随机数矩阵 > y <- matrix(rnorm(n_groups * n_obs), ncol = n_obs) # 生成Y随机数矩阵 > cor_vec <- apply(cbind(x, y), 1, cor) # 计算每组X和Y的相关系数 Error in FUN(newX[, i], ...) : 要么同时设定'x'和'y',要么只设定矩阵式的'x'是什么错误
时间: 2023-07-16 08:11:33 浏览: 168
os.rar_M?n_random event_建立随机事件_抽取名单
这个错误提示是因为 apply 函数的第一个参数必须是矩阵,而你把两个向量(x和y)拼接成了一个矩阵,apply 函数会把这个矩阵的每一行(代表每一组)作为参数传递给 FUN 函数。然而,cor 函数需要同时传入 x 和 y,而 apply 函数只传递了一行,所以就会报错。
要解决这个问题,可以把 x 和 y 拼接成一个大矩阵,然后再用 apply 函数计算每一组的相关系数。代码如下:
```
set.seed(123) # 设置随机数种子,保证每次运行结果一致
n_groups <- 10000 # 组数
n_obs <- 25 # 每组观察值数量
x <- matrix(rnorm(n_groups * n_obs), ncol = n_obs) # 生成X随机数矩阵
y <- matrix(rnorm(n_groups * n_obs), ncol = n_obs) # 生成Y随机数矩阵
xy <- cbind(x, y) # 将X和Y拼接成一个大矩阵
cor_vec <- apply(xy, 1, function(row) cor(row[1:n_obs], row[(n_obs+1):(2*n_obs)])) # 计算每组X和Y的相关系数
```
这样,就可以得到每一组 X 和 Y 的相关系数了。
阅读全文