没有`rbind`功能的粘贴向量

时间:2018-10-05 17:13:13

标签: r

我的R环境中有10个向量。我想粘贴此向量以创建数据框。我使用了rbind函数,但是我认为效率很低,因为我必须在函数中键入所有变量。问题是,我可以使用paste0paste函数或类似的其他函数来粘贴此向量吗?谢谢。

#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)

我想使用rbindpaste0之类的功能粘贴不带paste的向量。

2 个答案:

答案 0 :(得分:5)

当参数是一个列表并且该函数所期望的项目只是矢量时,# Initialise a client storage_client = storage.Client("[Your project name here]") # Create a bucket object for our bucket bucket = storage_client.get_bucket(bucket_name) # Create a blob object from the filepath blob = bucket.blob("folder_one/foldertwo/filename.extension") # Download the file to a destination blob.download_to_filename(path_to_gcs_file) with open(path_to_gcs_file, "rb" as f: train_df = = pickle.load(f) 函数很有用。由于返回列表的do.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

答案 1 :(得分:0)

ls()返回环境中所有变量名的向量。如果对每个以 x 开头的变量名进行正则表达式,则可以遍历新的向量,并get()调用该名称的变量。如果在get函数中调用lapply,则将获得所有被调用变量的列表。 do.call()对列表中的每个项目执行功能。

to_get <- ls()[grepl('^x', ls())]
to_bind <- lapply(to_get, get)
final_matrix <- do.call(rbind, to_bind)