相关疑难解决方法(0)

使用 R 函数 `outer` 时出现“dims [product xx] 与对象 [xx] 的长度不匹配”错误

x <- 1:9
names(x) <- paste0("x",x)
y <- 2:5
names(y) <- paste0("y",y)

fun1      <-function(a, b) {paste(class(a),b, sep = "**")} #works
funError  <-function(a, b) {paste(class(a),class(b), sep = "**")} #does not work with outer
funNoError<-function(a, b) {paste(a,class(a),class(b),b, sep = "**")}  #works with outer  

funError(1,2) #is a valid function
outer(x, y, "funError") # fails
outer(x, y, "funNoError") # works
Run Code Online (Sandbox Code Playgroud)

Q1:为什么不起作用outer(x, y, "funError")

dim(robj) <- c(dX, dY) 中的错误:dims [产品 36] 与对象 [1] 的长度不匹配

Q2:为什么outer(x, y, "funNoError")有效?它非常相似。

  • 我能看到的唯一区别是,的每个“结果”funError …

r

2
推荐指数
1
解决办法
6191
查看次数

为什么这个矩阵不是数字的?然后 `as.numeric` 销毁矩阵并返回一个向量

我有一个名为 的数据框input。第一列指的是文章 ID ( ArtID),后续列将用于创建矩阵。

基于ArtID,我希望 R 生成一个 2x2 矩阵(更准确地说:它需要是一个数字 2x2 矩阵)。具体来说,我想为第一行(ArtID == 1)、第二行(ArtID == 2)等创建一个矩阵......

到目前为止我想到的是:

for(i in 1:3) {stored.matrix = matrix(input[which(ArtID ==i),-1],nrow = 2)
Run Code Online (Sandbox Code Playgroud)

这给了我一个 2x2 矩阵,但它不是数字(它需要是)。

如果我应用as.numeric,矩阵就不再是 2x2 矩阵。

如何获得 2x2 数值矩阵?


最小可重现示例:

ArtID = c(1,2,3)
AC_AC = c(1,1,1)
MKT_AC = c(0.5,0.6,0.2)
AC_MKT = c(0.5,0.6,0.2)
MKT_MKT = c(1,1,1)
input = data.frame(ArtID, AC_AC, MKT_AC, AC_MKT, MKT_MKT)

stored.matrix = matrix(input[which(ArtID ==i),-1],nrow = 2)
#     [,1] [,2] …
Run Code Online (Sandbox Code Playgroud)

r matrix

1
推荐指数
1
解决办法
790
查看次数

标签 统计

r ×2

matrix ×1