我正在尝试使用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中这是否可行?
谢谢
答案 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