在分配R中使用for循环名称

时间:2020-08-13 12:51:20

标签: r

我正在尝试使用for循环变量进行R中的赋值。假设我有3个字符串的列表:

fruits = list('apple', 'pear', 'grape')

我希望使用这些名称在for循环中进行分配,例如

values = list()
for (name in fruits){
    values <- c(values, name = 5)
}

我想要一个看起来像这样的新列表:

values
apple = 5
pear = 5
grape = 5

但是我收到的是这个信息

values
name = 5
name = 5
name = 5

在R中这是否可行?

谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用[[]]进行分配:

fruits = list("apple"," pear", "grape")

#I wish to use these names to assign in a for loop e.g.

values = list()
for (name in fruits){
    values[[name]] <- c(5)
}

答案 1 :(得分:0)

有时候,不更容易在循环中设置名称,但之后再设置名称则更容易。因此,如果您已经列出了

values <- list(5, 5, 5)
# or values <- as.list(rep(5,3))

你可以做

values <- setNames(values, fruits)

或者,如果您正在使用Map()来获取每个输入的值,则假设您传入的是字符向量而不是列表,则将为您命名结果。 (而且,如果您只是存储名称,那么对于大多数情况来说,矢量可能更好)

Map(function(...) 5, as.character(fruits))
# $apple
# [1] 5
# $pear
# [1] 5
# $grape
# [1] 5