我有一个矩阵,其中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)
但感觉有更好的方法来做到这一点.
这实际上是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
谁能告诉我为什么这两个给出不同的答案?第一个是正确的,显然是更简单的解决方案.但我想知道为什么第二个不正确.
编辑:事故中捏造了第二个答案.