使用 R.Update 时维数不正确
Incorrect number of dimensions while using R.Update
我是一个非常新的 R 用户。我自学使用它,但我仍然犯了很多错误:(
我正在尝试 运行 这段代码,但我在 Y_dina 函数中遇到错误。我希望有人可以解释错误是什么以及如何解决。
Y_dina <- function(Alpha,q_m,s,g){
for(i in 1:N)
{
j_index = sample(50,1:J,replace=FALSE)
for(j in 1:length(j_index))
{
s=runif(J,0.05, 0.25)
g=runif(J,0.05, 0.25)
u <- runif(1)
eta = prod(Alpha[i,]^q_m[j_index[j,]])
return(as.numeric((u>s[j])^eta*((u<g[j]))^(1-eta)))
}
}
}
我已经定义了 Alpha 矩阵和 q_m 矩阵,每次我 运行 代码都出现相同的错误:Alpha[i, ] 错误:维数不正确。而 alpha 如下:
K=4
N=10000
J=200
Alpha = rep(0,K)
for(j in 1:K){
temp_m = combn(1:K,m=j)
temp_mat = matrix(0,ncol(temp_m),K)
for(j in 1:ncol(temp_m)) temp_mat[j,temp_m[,j]] = 1
Alpha = rbind(Alpha,temp_mat)
}
Alpha = as.matrix(Alpha)
并且,
q_m = matrix(rep(diag(K),2),K,K,byrow=TRUE)
for(i in 2:K)
{
temp_m = combn(1:K,m=i)
temp_mat = matrix(0,ncol(temp_m),K)
for(j in 1:ncol(temp_m)) temp_mat[j,temp_m[,j]] = 1
q_m = rbind(q_m,temp_mat)
}
感谢您的帮助。
N= 10000
J=200
K=4
Alpha = rep(0,K)
for(j in 1:K){
temp_m = combn(1:K,m=j)
temp_mat = matrix(0,ncol(temp_m),K)
for(j in 1:ncol(temp_m)) temp_mat[j,temp_m[,j]] = 1
Alpha = rbind(Alpha,temp_mat)
}
Alpha = as.matrix(Alpha)
Y_dina <- function(Alpha,q_m,s,g){
for(i in 1:N)
{
j_index = as.numeric(sample(50,1:J,replace=FALSE))#step1
for(j in 1:length(j_index))
{
s=runif(J,0.05, 0.25)
g=runif(J,0.05, 0.25)
u <- runif(1)
eta = prod(Alpha[i,]^q_m[j_index[j,]])#step2
return(as.numeric((u>s[j])^eta*((u<g[j]))^(1-eta)))
}
}
}
根据代码本身,您正在为 Alpha 分配 matrix.in 第 1 步,j_index 正在生成需要转换为数字的随机值。
在第 2 步中,您分配的乘积值是 q_m 和 alpha 的矩阵乘法。因此,两个矩阵都应该遵循矩阵乘法。您给出的两个矩阵的示例都是 1x4,因此它们无法执行矩阵乘法。
当我 运行 你的代码时,alpha 的维度是 [1:16,1:4],q_m 的维度是 [1:15,1:4]。这可能是您得到错误尺寸的原因。
我是一个非常新的 R 用户。我自学使用它,但我仍然犯了很多错误:(
我正在尝试 运行 这段代码,但我在 Y_dina 函数中遇到错误。我希望有人可以解释错误是什么以及如何解决。
Y_dina <- function(Alpha,q_m,s,g){
for(i in 1:N)
{
j_index = sample(50,1:J,replace=FALSE)
for(j in 1:length(j_index))
{
s=runif(J,0.05, 0.25)
g=runif(J,0.05, 0.25)
u <- runif(1)
eta = prod(Alpha[i,]^q_m[j_index[j,]])
return(as.numeric((u>s[j])^eta*((u<g[j]))^(1-eta)))
}
}
}
我已经定义了 Alpha 矩阵和 q_m 矩阵,每次我 运行 代码都出现相同的错误:Alpha[i, ] 错误:维数不正确。而 alpha 如下:
K=4
N=10000
J=200
Alpha = rep(0,K)
for(j in 1:K){
temp_m = combn(1:K,m=j)
temp_mat = matrix(0,ncol(temp_m),K)
for(j in 1:ncol(temp_m)) temp_mat[j,temp_m[,j]] = 1
Alpha = rbind(Alpha,temp_mat)
}
Alpha = as.matrix(Alpha)
并且,
q_m = matrix(rep(diag(K),2),K,K,byrow=TRUE)
for(i in 2:K)
{
temp_m = combn(1:K,m=i)
temp_mat = matrix(0,ncol(temp_m),K)
for(j in 1:ncol(temp_m)) temp_mat[j,temp_m[,j]] = 1
q_m = rbind(q_m,temp_mat)
}
感谢您的帮助。
N= 10000
J=200
K=4
Alpha = rep(0,K)
for(j in 1:K){
temp_m = combn(1:K,m=j)
temp_mat = matrix(0,ncol(temp_m),K)
for(j in 1:ncol(temp_m)) temp_mat[j,temp_m[,j]] = 1
Alpha = rbind(Alpha,temp_mat)
}
Alpha = as.matrix(Alpha)
Y_dina <- function(Alpha,q_m,s,g){
for(i in 1:N)
{
j_index = as.numeric(sample(50,1:J,replace=FALSE))#step1
for(j in 1:length(j_index))
{
s=runif(J,0.05, 0.25)
g=runif(J,0.05, 0.25)
u <- runif(1)
eta = prod(Alpha[i,]^q_m[j_index[j,]])#step2
return(as.numeric((u>s[j])^eta*((u<g[j]))^(1-eta)))
}
}
}
根据代码本身,您正在为 Alpha 分配 matrix.in 第 1 步,j_index 正在生成需要转换为数字的随机值。
在第 2 步中,您分配的乘积值是 q_m 和 alpha 的矩阵乘法。因此,两个矩阵都应该遵循矩阵乘法。您给出的两个矩阵的示例都是 1x4,因此它们无法执行矩阵乘法。
当我 运行 你的代码时,alpha 的维度是 [1:16,1:4],q_m 的维度是 [1:15,1:4]。这可能是您得到错误尺寸的原因。