回答
可以用'scan'读入它,或者只是在矩阵上做as.vector()。如果需要按行或列,您可能需要先转置矩阵。该解决方案发布至今都是很恶心我还没有想尝试...
> m=matrix(1:12,3,4)
> m
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> as.vector(m)
[1] 1 2 3 4 5 6 7 8 9 10 11 12
> as.vector(t(m))
[1] 1 4 7 10 2 5 8 11 3 6 9 12
从?matrix
:“矩阵是二维'数组'的特例。”你可以简单地改变矩阵/数组的尺寸。
Elts_int <- as.matrix(tmp_int) # read.table returns a data.frame as Brandon noted
dim(Elts_int) <- (maxrow_int*maxcol_int,1)
阅读表返回一个data.frame不是矩阵。如果没有as.matrix(),这仍然可以工作吗? – 2010-09-29 16:16:18
@Brandon不会的;接得好! – 2010-09-29 16:21:37
您可以使用约书亚的解决方案,但我认为你需要Elts_int <- as.matrix(tmp_int)
或者for循环:
z <- 1 ## Initialize
counter <- 1 ## Initialize
for(y in 1:48) { ## Assuming 48 columns otherwise, swap 48 and 32
for (x in 1:32) {
z[counter] <- tmp_int[x,y]
counter <- 1 + counter
}
}
z是一维向量。
如果我们谈论data.frame,那么你应该问自己是同一类型的变量?如果是这样的话,你可以rapply,或选择不公开使用,因为data.frames的名单,在他们的灵魂深处......
data(mtcars)
unlist(mtcars)
rapply(mtcars, c) # completely stupid and pointless, and slower
'unlist'为我工作。 – 2017-03-05 08:05:08
array(A)
或array(t(A))
会给你一个一维数组。
简单和快速,因为一维数组本质上是一个矢量
vector <- array[1:length(array)]
它可能是这么晚了,反正这是我在矩阵转换为矢量方式:
library(gdata)
vector_data<- unmatrix(yourdata,byrow=T))
希望这将有助于
如果你有一个data.frame(df)有多个列,并且你想要矢量化,你可以做
as.matrix(df,ncol = 1)
这也适用于矩阵。 – 2017-01-25 15:11:28
您可以使用as.vector()
。它看起来是根据我的小基准最快方法,如下所示:
library(microbenchmark)
x=matrix(runif(1e4),100,100) # generate a 100x100 matrix
microbenchmark(y<-as.vector(x),y<-x[1:length(x)],y<-array(x),y<-c(x),times=1e4)
第一解决方案使用as.vector()
,第二个使用的是一个矩阵被存储在存储器中的连续的阵列和length(m)
给出了这样的事实矩阵中元素的数量m
。第三个从x
实例化array
,第四个使用连接函数c()
。我也尝试unmatrix
从gdata
,但它太慢,不能在这里提到。
这里有一些我所获得的数值结果:
> microbenchmark(
y<-as.vector(x),
y<-x[1:length(x)],
y<-array(x),
y<-c(x),
times=1e4)
Unit: microseconds
expr min lq mean median uq max neval
y <- as.vector(x) 8.251 13.1640 29.02656 14.4865 15.7900 69933.707 10000
y <- x[1:length(x)] 59.709 70.8865 97.45981 73.5775 77.0910 75042.933 10000
y <- array(x) 9.940 15.8895 26.24500 17.2330 18.4705 2106.090 10000
y <- c(x) 22.406 33.8815 47.74805 40.7300 45.5955 1622.115 10000
平展矩阵在机器学习,共同操作,其中一个矩阵可以代表参数来学习,但一个从一个普通的采用优化算法库期望一个参数向量。所以通常将矩阵(或矩阵)转换成这样的向量。标准R功能optim()
就是这种情况。
- 1. 将列转换为矩阵
- 2. 将阵列数组转换为矩阵
- 3. 将二维仿射变换矩阵转换为三维仿射变换矩阵
- 4. 要将m×n矩阵转换为1×n矩阵
- 5. 转换为单列矩阵
- 6. 将RleViews转换为矩阵
- 7. 使用张量流将3D矩阵转换成二维矩阵
- 8. 将矩阵市场转换为CRS转换(稀疏矩阵)
- 9. 如何将列矩阵转换为行矩阵在MATLAB
- 10. 将列表转换为numpy矩阵
- 11. 将列表转换为稀疏矩阵
- 12. 将嵌套列表转换为矩阵
- 13. 将矩阵列表转换为向量
- 14. 如何将列表转换为矩阵?
- 15. 将平面阵列转换为多维
- 16. 将二维矩阵转换为字符串列(java)
- 17. 将锯齿阵列转换为几个一维阵列
- 18. 如何将3x3旋转矩阵转换为4x4矩阵?
- 19. 在Matlab中将单维矩阵转换为二维
- 20. 1维阵列,以2维阵列
- 21. 转换向量单元阵列到二维矩阵 - MATLAB
- 22. 将数据帧转换为一个1和1的矩阵R
- 23. 将转换矩阵转换为列表列表
- 24. 变换矩阵1×4成4X1矩阵
- 25. Opencv:将RGB矩阵转换为1d阵列
- 26. 如何在MATLAB中将阵列向量转换为矩阵
- 27. 在OpenCV中将矩阵转换为阵列/向量
- 28. Numpy:将RGB平面阵列转换为矩阵
- 29. 将数据帧转换为矩阵,并将第1列的df作为矩阵的rownames
- 30. MATLAB:3D矩阵单元阵列转换
这应该是被接受的解决方案,因为问题标题清楚地表明矩阵输入 – C8H10N4O2 2016-03-25 13:07:13
转置矩阵是天才! – LostLin 2017-12-21 20:49:35