小编use*_*119的帖子

如何从矩阵中提取rownames?

我有一个矩阵,其中rownames是日期.我想将这些行名称提取到一个变量中,然后使用rownames()将这些日期应用到我拥有的另一个矩阵中.假设矩阵称为'data.matrix'.

每当我跑:

data.matrix[,0]
Run Code Online (Sandbox Code Playgroud)

我得到了所有日期的打印输出.所以我这样做:

v <- data.matrix[,0]
Run Code Online (Sandbox Code Playgroud)

当我返回v时,我得到了所有日期的清单.但是当我使用时:

rownames(other.matrix) <- v
Run Code Online (Sandbox Code Playgroud)

然后我回来:

head(other.matrix)
Run Code Online (Sandbox Code Playgroud)

我没有得到任何新的列名.

另外,当我尝试:

head(v)
Run Code Online (Sandbox Code Playgroud)

我明白了 NULL

但当我这样做时:

v
Run Code Online (Sandbox Code Playgroud)

我得到了所有约会的精美打印件.

什么给出了什么?起初我认为矩阵和日期是不相容的,但似乎它们似乎是.

现在我用merge()这种方式添加日期:

z <- merge(v, other.matrix)
Run Code Online (Sandbox Code Playgroud)

但感觉有更好的方法来做到这一点.

r matrix rowname

8
推荐指数
1
解决办法
2万
查看次数

为什么我在R中得到这两种算法的不同答案?

这实际上是Project Euler中的第一个问题.我创建了这两个算法来解决它,但它们各自产生不同的答案.基本上,工作是编写一个程序,将3和5的所有产品的总和低于1000.

这是正确的:

divisors<-0


for (i in 1:999){
    if ((i %% 3 == 0) || (i %% 5 == 0)){
        divisors <- divisors+i 
        }
    }
Run Code Online (Sandbox Code Playgroud)

得出的答案是233168

这是错误的:

divisors<-0

for (i in 1:999){
    if (i %% 3 == 0){
        divisors <- divisors + i
        }
    if (i %% 5 == 0){
        divisors <- divisors + i 
        }
    }
Run Code Online (Sandbox Code Playgroud)

这给出了答案266333

谁能告诉我为什么这两个给出不同的答案?第一个是正确的,显然是更简单的解决方案.但我想知道为什么第二个不正确.

编辑:事故中捏造了第二个答案.

r

0
推荐指数
1
解决办法
353
查看次数

标签 统计

r ×2

matrix ×1

rowname ×1