为这个愚蠢的问题道歉,但我刚刚开始自学编程并与R合作,并且已经坚持了几天这个问题。我正在创建一个包含三个元素的向量,然后尝试编写一个for循环,为每个元素添加一个元素。这是我到目前为止所做的。
```{r}
vec <- c(3, 1, 4)
for (j in 1:dim(vec)[1]
vec = vec + 1
}
我试着看一些例子,这是我得到的最接近的,我觉得它应该有效,但我一直都会遇到错误。任何帮助将不胜感激。
答案 0 :(得分:2)
R具有矢量感知功能。大多数经典的数学运算都是矢量化的&#39; 。
另一个技巧是一些矢量化功能具有回收功能。
所以当你这样做时
v <- c(1, 2, 4)
v <- v + 1
将数字1作为与v。
的大小相匹配的向量进行回收鉴于此,v + 1与
相同v <- c(1, 2, 4) + c(1, 1, 1)
注意上面的for循环有各种语法错误
for (j in 1:dim(vec)[1] vec = vec + 1 }
应该是
for (j in 1:length(vec)) { vec[j] <- vec[j] + 1}
答案 1 :(得分:1)
R围绕向量构建,因此可以对整个向量执行函数和算术。 for
循环比使用R的基于矢量的本机操作要慢得多。只需删除for
循环即可。正如皮埃尔评论的那样,只需要vec + 1
。
vec <- c(3, 1, 4)
vec <- vec + 1
print(vec)
#[1] 4 2 5
虽然你永远不会这样做,但要修复你的循环,请执行以下操作:
vec <- c(3, 1, 4)
for (j in 1:length(vec)){
vec[j] = vec[j] + 1
}
print(vec)
#[1] 4 2 5