[英]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
来“获取”一个列表,然后使用sapply
和function(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.