【问题标题】:creating variable from a matrix R从矩阵 R 创建变量
【发布时间】:2015-02-04 20:43:23
【问题描述】:

我正在尝试从矩阵创建一组变量,这是我的代码

matrix<-cbind(paste("a",letters[1:11],sep=""), 
paste("b",letters[1:11],sep=""),
paste("c",letters[1:11],sep=""),
paste("d",letters[1:11],sep=""),
paste("e",letters[1:11],sep=""),
paste("f",letters[1:11],sep=""),
paste("g",letters[1:11],sep=""),
paste("h",letters[1:11],sep=""),
paste("i",letters[1:11],sep=""),
paste("j",letters[1:11],sep=""),
paste("k",letters[1:11],sep=""))

所以我有一个矩阵,其中包含字母 aa、ab、ac 等之间的所有组合; 如果我想创建具有相同名称的变量并为每个变量分配一个值,我该怎么办? 例如

aa<-0
ab<-0

等等;有没有自动做的方法?谢谢

【问题讨论】:

  • 要创建具有组合的矩阵,手写它们。你不需要R,只需拿一张纸和一支铅笔。以编程方式执行此操作的一种可能方法是outer(letters[1:11], letters[1:11], paste0)
  • 这是一个非常糟糕的想法,正如在 SO 上多次指出的那样。您不应该创建单独的变量,因为稍后单独引用它们将是一个真正的 PITA。
  • 这是一个糟糕的主意,因为您将尝试创建一个名为“if”的变量,这是一个保留字。如果我是你,我会重新考虑这一点。
  • @Dr.Mike 保留字是他最少的问题。

标签: r variables matrix


【解决方案1】:

考虑这种替代策略:

> m <- matrix(NA, 10, 10, dimnames=list(letters[1:10], letters[1:10]) )
> m[]  <- outer(1:10, 1:10, FUN="-")
> m
  a  b  c  d  e  f  g  h  i  j
a 0 -1 -2 -3 -4 -5 -6 -7 -8 -9
b 1  0 -1 -2 -3 -4 -5 -6 -7 -8
c 2  1  0 -1 -2 -3 -4 -5 -6 -7
d 3  2  1  0 -1 -2 -3 -4 -5 -6
e 4  3  2  1  0 -1 -2 -3 -4 -5
f 5  4  3  2  1  0 -1 -2 -3 -4
g 6  5  4  3  2  1  0 -1 -2 -3
h 7  6  5  4  3  2  1  0 -1 -2
i 8  7  6  5  4  3  2  1  0 -1
j 9  8  7  6  5  4  3  2  1  0

现在您可以使用字母对访问单个元素:

m['d','f'] [1] -2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多