使用 return 子集向量值对 R 中的另一个向量进行子集化
Use return subsetted vector value to subset another vector in R
我有一个向量存储这样的字符串:
labels <- as.character(c('site1', 'site2'))
除了我的向量存储了 100 个站点。然后我有数据框,以每个站点(站点 1、站点 2 等)命名,其中包含许多测量值。我想使用 for 循环从数据帧中迭代访问和绘制值。这样做时,我希望使用从第一个向量子集化返回的值来对数据帧进行子集化,如下所示:
y1<-(labels[1]$measurements)
但是一直没弄明白
谢谢。
我们可以使用 mget
从 'labels' 向量中的每个对象名称中获取值。输出将是 list
。我们可以使用 lapply
循环 list
并提取 measurements
列(如果我理解正确的话)。
lst <- lapply(mget(labels), function(x) x$measurements)
最好在 list
内完成所有操作。但是,如果您需要在全局环境中创建一些额外的对象(不推荐),我们可以使用 paste
更改 list
元素的名称,然后使用 list2env
.
colnames(lst) <- paste0('y', seq_along(lst))
list2env(lst, envir=.GlobalEnv)
y1
y2
我有一个向量存储这样的字符串:
labels <- as.character(c('site1', 'site2'))
除了我的向量存储了 100 个站点。然后我有数据框,以每个站点(站点 1、站点 2 等)命名,其中包含许多测量值。我想使用 for 循环从数据帧中迭代访问和绘制值。这样做时,我希望使用从第一个向量子集化返回的值来对数据帧进行子集化,如下所示:
y1<-(labels[1]$measurements)
但是一直没弄明白
谢谢。
我们可以使用 mget
从 'labels' 向量中的每个对象名称中获取值。输出将是 list
。我们可以使用 lapply
循环 list
并提取 measurements
列(如果我理解正确的话)。
lst <- lapply(mget(labels), function(x) x$measurements)
最好在 list
内完成所有操作。但是,如果您需要在全局环境中创建一些额外的对象(不推荐),我们可以使用 paste
更改 list
元素的名称,然后使用 list2env
.
colnames(lst) <- paste0('y', seq_along(lst))
list2env(lst, envir=.GlobalEnv)
y1
y2