编写for循环,为R中的每个元素添加1

时间:2015-10-10 23:18:58

标签: r for-loop

为这个愚蠢的问题道歉,但我刚刚开始自学编程并与R合作,并且已经坚持了几天这个问题。我正在创建一个包含三个元素的向量,然后尝试编写一个for循环,为每个元素添加一个元素。这是我到目前为止所做的。

```{r}
vec <- c(3, 1, 4) 
for (j in 1:dim(vec)[1]
vec = vec + 1
}

我试着看一些例子,这是我得到的最接近的,我觉得它应该有效,但我一直都会遇到错误。任何帮助将不胜感激。

2 个答案:

答案 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