使用 paste0 通过 for 循环创建多个对象名称

Use paste0 to create multiple object names with a for loop

我想用 for 循环创建多个对象名称。我尝试了以下方法,但都失败了:

somevar_1 = c(1,2,3)
somevar_2 = c(4,5,6)
somevar_3 = c(7,8,9)
for (n in length(1:3)) {
x <- as.name(paste0("somevar_",[i]))
x[2]
}

对于相应的迭代,期望的结果是 xsomevar_1somevar_2somevar_3,并且 x[2]258 分别。

我应该怎么做?

somevar_1 = c(1,2,3)
somevar_2 = c(4,5,6)
somevar_3 = c(7,8,9)
for (n in 1:3) {
  x <- get(paste0("somevar_", n))
  print(x[2])
}

结果

[1] 2
[1] 5
[1] 8

我们可以使用 mget 获取列表中所有必需的对象,并使用 sapply 从每个对象中提取第二个元素。

sapply(mget(paste0("somevar_", 1:3)), `[`, 2)

#somevar_1 somevar_2 somevar_3 
#        2         5         8