我读到R在矩阵中使用列主存储,这意味着附近列中的元素存储在相邻的块或类似的东西中。这让我想知道:按行填充矩阵(在基本R函数matrix()中使用byrow=TRUE )还是先按列填充矩阵(使用默认的byrow=FALSE),然后使用t()转换矩阵速度更快?
我试过做基准测试。
用行填充矩阵
> microbenchmark(matrix(1, n, n, byrow=TRUE))
Unit: seconds
expr min lq mean median uq max neval
我试图从R中的正态分布中生成1000个长度为100的随机样本,我觉得这应该是非常直接的,但我无法得到。
for (i in 1:1000) {
x[i]=rnorm(100, mean=1, sd=1)
}
for (i in 1:1000) {
y[i]=rnorm(100, mean=1, sd=1)
}
但是这段代码告诉我没有找到对象x(y的情况相同)。
有什么办法解决吗?最后,我希望有两个矩阵,x和y,其中每个列都是一个随机向量。
谢谢
我正在尝试使用R中的'networkD3‘库为我的数据创建chord图。我遵循了这篇stackoverflow文章中提出的逻辑:
我对使用'igraph‘和'networkd3’创建chord图特别感兴趣,因为我在我的计算机上没有安装其他库(如"circlize")的管理权限。
我在R中创建了一些假数据:
library(igraph)
library(dplyr)
library(networkD3)
#create file from which to sample from
x5 <- sample(1:100, 1100, replace
我试图使用二维矩阵来生成二维矩阵结果,在此结果中,每次更改函数中的值(相应地决定行数和列数)时,都会以新的方式确定行数和列数。我想问并解决“下标出界”问题的函数如下:
HRC <- function(n,b,c)
{
R=matrix( ,nrow = n*b, ncol = c)
R[0,]=133
for (j in 1:c)
{
r=rnorm(n*b)
for (i in 1:n*b){
R[i+1,j]=R[i,j]+3*b/r[i]
}
}
return(R)
}
HRC(10,1,3)
我得到的错误消息如下:
Error in R[i +
我目前有一个列多于行的数据矩阵。我为我的PCA使用了psych包中的主函数。我应该能够对此执行PCA,但如果列数多于行数,则似乎无法使其工作。错误消息是关于奇点的。
使用完整矩阵时,错误消息为
Error in solve.default(r, result$Structure) : Lapack routine dgesv: system is exactly singular: U[80,80] = 0
如果我减少了#列,但仍然超过了行数,则错误消息为:
Error in solve.default(r, result$Structure) : system is compu
我需要将我设置为M的矩阵复制到新的矩阵M2中,并输出该矩阵。
如何做到这一点?
这是我到目前为止尝试过的:
#include <iostream>
using namespace std;
#define N 24
void copy(int M[][N], int M2[][N], int ROWS, int COLS)
{
int r, c;
M2[r][c]= M[r][c];
cout<< M2[r][c];
}
void print(int M[][N], int ROWS, int COLS)
{
int r, c, ro
我正在将一个单元数组转换为R。在MATLAB中,我使用x=cell(10,n).I want并为循环中的每个单元分配一个矩阵,如下所示:
for i in 1:10
for j in 1:n
x(i,j) = [i*ones(len,1), ones(len,j)]
这里的n类似于列数。我如何在R中做到这一点?我尝试了R中的列表,我猜这个x看起来包含10个列表,每个列表有n个子列表,每个子列表都有一个矩阵。这是正确的吗?
图中显示了在Matlab .n=7中生成的第一个循环。第一行在每个单元格中包含一个数字矩阵。我想得到的是能够得到第一个矩阵“3x10双倍”通过使用
x[1][1] in
稀疏矩阵是元素主要为零的矩阵。下面的代码使用LinkedLists的ArrayList来实现稀疏矩阵。它定义了一个类元素来存储元素的列号和值。每一行由仅具有非零值的元素的LinkedList表示。很少(如果有的话)行全为零,因此ArrayList用于按升序存储每一行的LinkedList。
class Element {
public int column;
public int value; }
public class SparseMatrix {
private int mRows; // Number of rows
private int mCols; //
我目前正在编写一个矩阵类,将能够通过模板支持任意数量的行和列。我纠结于如何防止无效操作(例如,矩阵1的列数≠矩阵2的行数)。当然,我可以存储行数和列数,并在运行时进行检查,但最好是在编译时通过“通配符”模板参数进行检查。
换句话说..。
我想这样做:
template <typename T, int R, int C>
struct mat {
T matrix[R][C];
void operator *=(const mat<T, C, [can be anything]> &other) {
/* do operati
我有一个带有讨厌的零列的数值数据矩阵,我想删除它来做一些数据处理。我用is_zero_column <- colSums(matrix) == 0跟踪什么列是零列,并通过matrix <- matrix[,colSums(matrix)!=0]删除零列。
现在,我将如何进行反向操作,使用真/假(如果为零列为真)的is_zero_column将零列重新插入到矩阵中?
如果这不是R,我会选择一个forloop,其中构造一个新的矩阵:(在python-ish伪代码中)
new_matrix;
for i in is_zero_column:
if i is TRUE:
new