将变量重新分配给列表的元素
Reassign variables to elements of list
我在 R 中有一个对象列表,我使用 lapply
对其执行不同的操作。但是,在下一步中,我只想将函数应用于列表的某些元素。因此,我想再次将列表拆分为 原始变量 。 R中有这个命令吗?甚至有可能,还是每次我想这样做时都必须创建新变量?
请参阅以下示例以明确我的意思:
# 3 vectors:
test1 <- 1:3
test2 <- 2:6
test3 <- 8:9
# list l:
l <- list(test1,test2,test3)
# add 3 to each element of the list:
l <- lapply(l, function(x) x+3)
# In effect, list l contains modified versions of the three test vectors
问题: 我怎样才能将这些修改重新分配给原始变量?我不想做:
test1 <- l[[1]]
test2 <- l[[2]]
test3 <- l[[3]]
# etc.
有更好的方法吗?
假设您是 R 的新手,一种更直观的方法可能是使用 for 循环。我确实认为 Richard Scriven 的方法更好。它至少更简洁。
for(i in seq(1, length(l))){
name <- paste0("test",i)
assign(name, l[[i]] + 3)
}
综上所述,您的最终目标有点可疑。我建议您将结果保存在列表或矩阵中,特别是如果您是 R 的新手。通过将所有结果包含在列表或矩阵中,您可以继续使用 lapply 之类的函数并 sapply 来操作您的结果.
Richard Scriven 在评论中的粗略说法是将列表中的每个元素转换为一个对象,然后将这些对象传递给封闭环境,在本例中为全局环境。他本可以将对象传递到任何环境。例如尝试
e <- new.env()
list2env(lapply(mget(ls(pattern = "test[1-3]")), "+", 3), e)
请注意,test1
、test2
和 test3
现在位于环境 e
中。试试 e$test1
或 ls(e)
。更深入地研究括号,对 ls
的调用使用简单的正则表达式告诉 mget
要查找的对象的名称。有关更多信息,请查看 http://adv-r.had.co.nz/Environments.html.
我在 R 中有一个对象列表,我使用 lapply
对其执行不同的操作。但是,在下一步中,我只想将函数应用于列表的某些元素。因此,我想再次将列表拆分为 原始变量 。 R中有这个命令吗?甚至有可能,还是每次我想这样做时都必须创建新变量?
请参阅以下示例以明确我的意思:
# 3 vectors:
test1 <- 1:3
test2 <- 2:6
test3 <- 8:9
# list l:
l <- list(test1,test2,test3)
# add 3 to each element of the list:
l <- lapply(l, function(x) x+3)
# In effect, list l contains modified versions of the three test vectors
问题: 我怎样才能将这些修改重新分配给原始变量?我不想做:
test1 <- l[[1]]
test2 <- l[[2]]
test3 <- l[[3]]
# etc.
有更好的方法吗?
假设您是 R 的新手,一种更直观的方法可能是使用 for 循环。我确实认为 Richard Scriven 的方法更好。它至少更简洁。
for(i in seq(1, length(l))){
name <- paste0("test",i)
assign(name, l[[i]] + 3)
}
综上所述,您的最终目标有点可疑。我建议您将结果保存在列表或矩阵中,特别是如果您是 R 的新手。通过将所有结果包含在列表或矩阵中,您可以继续使用 lapply 之类的函数并 sapply 来操作您的结果.
Richard Scriven 在评论中的粗略说法是将列表中的每个元素转换为一个对象,然后将这些对象传递给封闭环境,在本例中为全局环境。他本可以将对象传递到任何环境。例如尝试
e <- new.env()
list2env(lapply(mget(ls(pattern = "test[1-3]")), "+", 3), e)
请注意,test1
、test2
和 test3
现在位于环境 e
中。试试 e$test1
或 ls(e)
。更深入地研究括号,对 ls
的调用使用简单的正则表达式告诉 mget
要查找的对象的名称。有关更多信息,请查看 http://adv-r.had.co.nz/Environments.html.