不带'rbind'函数的粘贴向量
我的R环境中有10个向量。我想粘贴这个向量来创建一个数据帧。我使用了不带'rbind'函数的粘贴向量,r,R,我的R环境中有10个向量。我想粘贴这个向量来创建一个数据帧。我使用了rbind函数,但我认为这是非常低效的,因为我必须在函数中键入所有变量。问题是,我可以使用paste0或paste函数或其他类似函数来粘贴此向量吗?谢谢 #Por ejemplo x1 <- c(1, 2) x2 <- c(3, 4) x3 <- c(5, 6) x4 <- c(7, 8) x5 <- c(9, 10) x6 <- c(11, 12) x7 <- c(13, 14) x
rbind
函数,但我认为这是非常低效的,因为我必须在函数中键入所有变量。问题是,我可以使用paste0
或paste
函数或其他类似函数来粘贴此向量吗?谢谢
#Por ejemplo
x1 <- c(1, 2)
x2 <- c(3, 4)
x3 <- c(5, 6)
x4 <- c(7, 8)
x5 <- c(9, 10)
x6 <- c(11, 12)
x7 <- c(13, 14)
x8 <- c(15, 16)
x9 <- c(17, 18)
x10 <- c(19, 30)
rbind(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)
#Por ejempo
x1do.call
函数在参数为列表且函数所需的项仅为向量时非常有用。由于返回列表的mget
是尝试从字符名转换为对象名时的自然工具,因此您可以尝试:
do.call(rbind, mget(paste0("x", 1:10)))
#---
[,1] [,2]
x1 1 2
x2 3 4
x3 5 6
x4 7 8
x5 9 10
x6 11 12
x7 13 14
x8 15 16
x9 17 18
x10 19 30
或者使用矩阵
matrix(unlist(mget(paste0("x", 1:10))), ncol=2, byrow = TRUE)
ls()
返回环境中所有变量名的向量。如果对每个以x开头的变量名执行正则表达式,则可以迭代新的向量并get()
它们以调用具有该名称的变量。如果在lappy
函数中调用get
,则会得到所有被调用变量的列表do.call()
对列表中的每个项目执行一个函数
to_get <- ls()[grepl('^x', ls())]
to_bind <- lapply(to_get, get)
final_matrix <- do.call(rbind, to_bind)
要获取,为什么不使用rbind
?什么是为角色对象保留的粘贴?请显示所需的输出。问题是您创建了一组顺序命名的变量。不要那样做。从一开始就将它们放在数据结构中,如数据框或列表中。@Parfait Imo,这很好。OP应该知道如何查找帮助文件,但我想指向?do.call
等不会有什么坏处。如果有什么事情(我)不满意的话,我想是因为缺乏告诫/批评,不能像OP那样在全球环境中制造一堆向量(例如,加上一句“当然,这很愚蠢”)。无论如何,我想更多的评论可以转到“谢谢”,这对我帮助很大。或者你可以使用eapply
:eapply(.GlobalEnv,identity)[grepl(“^x”,ls())]
谢谢,非常有用我不知道怎么做