如何在R中创建一个循环,每次循环都使用不同的变量?

时间:2018-08-23 18:40:27

标签: r loops

我想制作一个循环,每次循环重复使用一个不同的变量。假设我有3个不同的变量:x,y和z:

x <- 1
y <- 2
z <- 3

我想对x,y和z执行相同的计算。我想乘以2:

B <- A*2

在每个循环之前,我希望将A设置为等于新变量。要做到这一点,很长的路要走就是手动将其全部写出:

A <- x
B <- A*2
A <- y
B <- A*2
A <- z
B <- A*2

我希望结果成为这种形式的向量。

C <- c(2,4,6)

我的计算和变量比这里显示的要长得多,因此手动将其写出会使我的代码非常混乱。我更喜欢使用循环,所以我只需要编写一次计算。

2 个答案:

答案 0 :(得分:2)

通常,您可以通过将内容存储在列表中并从apply系列调用函数来避免循环:

mylist <- list(x, y, z)
sapply(mylist, function(x) x*2)

请注意,如果您的变量位于数据框中,这将非常简单且有用:

df <- data.frame(x, y, z)
sapply(df, function(x) x*2)

答案 1 :(得分:0)

这是基本的R编程,可以用*apply的形式解决。

首先将变量放入list

x <- 1
y <- 2
z <- 3

my_list <- list(x, y, z)

首先,我的评论中的mapply。严格来说,不必分配新的功能,而只是使用{em>看起来类似于功能的功能f。函数'*'没有。

f <- `*`    # assign the function '*' to function f

mapply(f, my_list, list(2))
#[1] 2 4 6

另一种方法是使用lapplysapply。阅读帮助页面(这两种*apply形式都是相同的。)

g <- function(v){
    2*v
}

sapply(my_list, g)
#[1] 2 4 6

lapply(my_list, g)