【发布时间】:2016-04-04 19:53:43
【问题描述】:
我可能有一个愚蠢的问题,但我就是无法理解其背后的逻辑。
Question 1:
a = c(10,20,30)
b = c(15,30,45)
c = cbind(a,b)
for ( i in 1:ncol(c))
{d[i] = c[i]+2}
print(d)
# Error d not defined
然后我想也许我需要一个占位符来代表这个问题,所以我做了以下事情:
Question 2:
d = matrix(NA, 3,2) # now have the same dimension as c
for ( i in 1:ncol(c)){d[i] = c[i]+2}
输出是
[,1] [,2]
[1,] 12 NA
[2,] 22 NA
[3,] NA NA
我无法解释上述输出。我不明白为什么我在第 3 行得到 NA。
我也尝试了以下方法:
for ( i in 1:ncol(c)){d[,i] = c[,i]+2}
然后我得到了正确的答案,但是当我尝试以下操作时出现错误:
Question 3:
for ( i in 1:ncol(c)){d[i] = c[,i]+2}
Warning messages:
1: In d[i] = c[, i] + 2 :
number of items to replace is not a multiple of replacement length
2: In d[i] = c[, i] + 2 :
number of items to replace is not a multiple of replacement length
我知道我已经问了很多问题,但如果你能回答他们一个傻瓜,我将不胜感激。
【问题讨论】:
-
c()是一个函数。通常,将其他内容分配给c是不好的做法 -
第一季度未定义
-
我认为我无法帮助解决这个问题,因为您的帖子在很大程度上取决于之前运行的代码。 (正如@42 在答案中所说)。如果您仍然感到困惑,请重新启动您的 R 会话,然后一行一行地运行代码。从干净的 R 会话开始很重要,这样事情就可以重现。我也认为如果你从一个目标开始会更好,而不仅仅是一些令人困惑的代码。代码的目标是什么?让我们研究如何完成目标,而不是如何理解破碎的事物。
-
@Gregor 感谢您的回复,但我一一运行代码并找到了答案。请参阅下面的答案。