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 …
我有一个名为 的数据框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)