当前位置: 首页 > 编程笔记 >

R矩阵

凌意
2023-03-14
本文向大家介绍R矩阵,包括了R矩阵的使用技巧和注意事项,需要的朋友参考一下

示例

对于对象的每个维度,[运算符采用一个参数。向量具有一维并采用一个参数。矩阵和数据帧具有两个维度,并采取两个参数,给定为[i, j]其中i是的行和j是列。索引从1开始。

## a sample matrix
mat <- matrix(1:6, nrow = 2, dimnames = list(c("row1", "row2"), c("col1", "col2", "col3")))

mat
#      col1 col2 col3
# row1    1    3    5
# row2    2    4    6

mat[i,j]是矩阵的i第th行j第th列中的元素mat。例如,的i值2和的j值1给出矩阵第二行和第一列中的数字。忽略i或j返回该维度中的所有值。

mat[ , 3]
## row1 row2 
##    5    6 

mat[1, ]
# col1 col2 col3 
#    1    3    5

当矩阵具有行名或列名(不是必需的)时,这些可用于子集:

mat[ , 'col1']
# row1 row2 
#    1    2

默认情况下,子集的结果将尽可能简化。如果子集只有一维,如上面的示例,结果将是一维向量,而不是二维矩阵。可以使用以下drop = FALSE参数覆盖此默认值[:

## This selects the first row as a vector
class(mat[1, ])
# [1] "integer"

## Whereas this selects the first row as a 1x3 matrix:
class(mat[1, , drop = F])
# [1] "matrix"

当然,如果选择本身具有两个尺寸,则不能删除尺寸:

mat[1:2, 2:3]  ## A 2x2 matrix
#      col2 col3
# row1    3    5
# row2    4    6

通过其位置选择各个矩阵条目

也可以使用Nx2矩阵从矩阵中选择N个单独的元素(例如坐标系统的工作方式)。如果要在向量中提取矩阵中的项,(1st row, 1st column), (1st row, 3rd column), (2nd row, 3rd column), (2nd row, 1st column)可以轻松创建一个具有这些坐标的索引矩阵,然后使用该子集对矩阵进行子集化:

mat
#      col1 col2 col3
# row1    1    3    5
# row2    2    4    6

ind = rbind(c(1, 1), c(1, 3), c(2, 3), c(2, 1))
ind
#      [,1] [,2]
# [1,]    1    1
# [2,]    1    3
# [3,]    2    3
# [4,]    2    1

mat[ind]
# [1] 1 5 6 2

在上面的示例中,ind矩阵的第一列引用中的行mat,的第二列ind引用中的列mat。

 类似资料:
  • 主要内容:语法,例子,访问矩阵的元素,矩阵计算矩阵是其中元素以二维矩形布局排列的R对象。它们包含相同原子类型的元素。 虽然我们可以创建一个仅包含字符或仅包含逻辑值的矩阵,但它们没有太多用处。 我们使用包含数学元素的矩阵来在数学计算中使用。 矩阵可通过使用函数来创建。 语法 在R中创建矩阵的基本语法是 - 以下是使用的参数的描述 - data - 是将要转为矩阵元素的输入向量。 nrow - 是要创建的行数。 ncol - 是要创建的列数。 b

  • 在R编程中,如何子集一个矩阵,以便跳过中间的列?我只知道如何像1:4那样连续地做,但是如果我想要第一、第二和第四个柱呢

  • 我有一个data.frame包含三个二进制变量的调查数据。数据已经在列联表中,前3列是答案(1=是,0=否),第四列显示答案的总数。行是三个不同的组。 我的目的是计算Z分数,以检查比例与总的相比是否有显著差异 这是我的数据: 这些是我的总价值 所以这里当前使用的参数dftotal$var1和dftotal$totaln不起作用,但我不知道如何将它们输入公式。对于第一个参数,它不能总是var1,而应

  • 我目前正在将原始矩阵转换为光栅以使用焦距函数,然后我想将光栅转换回矩阵。但是,当我尝试将光栅函数用作时,出现了一条错误消息。矩阵()。即使有这个非常简单的例子: 以下是我得到的: 如果(!is.null(names(x)))列表(names(x),,则数组(x,c(length(x),1L)中出错: “dimnames”[1]的长度不等于数组范围 我正在使用RstuIO、R版本3.4.0和、和库。

  • 我有一个带有空间坐标和一个变量的矩阵数据。空间分辨率为1000米。 我想将其转换为光栅格式。 我使用下面的代码来完成它。但我得到的决心与我得到的不一样。有没有更好的方法可以用我的真实数据获得相同的分辨率?

  • 假设我们有两个矩阵,即和,分别为和。 我们如何才能找到哪些行与行相同(反之亦然)? 优选的输出是矩阵,其行数等于矩阵和之间的标识行,两列,即第一列包含矩阵的行数,第二列包含矩阵的行数。

  • 我有两个列表,每个列表中有两个矩阵。。是否有一种方法可以对它们进行矩阵计算,即相加,其中matrix1中的蓝色矩阵与matrix2中的蓝色矩阵相加,matrix1中的红色矩阵与matrix2中的红色矩阵相加。我能想到的唯一方法是在循环中进行计算 请注意,我将有大约10个,以及不止一组(即蓝色、红色、绿色、紫色)

  • 中的值匹配功能非常有用。但据我理解,它不足以支持二维或高维输入。 例如,假设和是相同列数的矩阵,我想将的行与的行进行匹配。“R”函数调用不这样做。列表的输入也存在同样的不足。 我已经实现了我自己的版本,名为(附在下面),但我想知道您对此任务的解决方案是什么。