繁体   English   中英

Cbind 在 R 中获取环境对象

[英]Cbind get environment objects in R

我想使用它们名称的向量来绑定相同维度的向量。

例如我想从

a <- c(2, 5, NA, NA, 6, NA)
b <- c(NA, 1, 3, 4, NA, 8)

使用cbind(a,b)矩阵

      a  b
[1,]  2 NA
[2,]  5  1
[3,] NA  3
[4,] NA  4
[5,]  6 NA
[6,] NA  8

但是从环境对象名称的向量中调用变量,例如vectornames <- c("a","b")

我最后一次尝试在cbind(for(i in vectornames) get(i))上失败

您想在sapply / lapply get功能。 例如:

a <- c(2, 5, NA, NA, 6, NA)
b <- c(NA, 1, 3, 4, NA, 8)
nmes <- c("a", "b")

# Apply get() to each name in the nmes vector
# Then convert the resulting matrix to a data frame
as.data.frame(sapply(nms, get))
   a  b
1  2 NA
2  5  1
3 NA  3
4 NA  4
5  6 NA
6 NA  8

从技术上讲,您可以使用cbind来做到这cbind ,但它更尴尬:

# Convert the vector of names to a list of vectors
# Then bind those vectors together as columns
do.call(cbind, lapply(nms, get))

我们可以使用mget来“获取”一个列表,然后使用sapplyfunction(x) x["loop-unlist"列表"loop-unlist"以创建一个矩阵

sapply(mget(vectornames), \(x) x)

#OR

sapply(mget(vectornames), `[`)

      a  b
[1,]  2 NA
[2,]  5  1
[3,] NA  3
[4,] NA  4
[5,]  6 NA
[6,] NA  8

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM