r - 如何轻松地将多个向量组合成一个数据框?

标签 r vector for-loop dataframe

我知道我可以使用 data.frame 命令将多个向量组合成一个数据帧,如下所示:

my.data <- data.frame(name1, age1, name20, age20, name38, age38)

(我知道,变量名称没有多大意义,为什么我想要 name1、name20 和 name38 位于三个不同的列中?请忽略这一点:我的实际变量名称不同 - 这仅用于说明目的) .

问题是,我有大约 40 个这样的向量,而且我还必须在代码的其他部分组合许多向量。所以对我来说,不用每次都复制粘贴一大堆代码会很方便。所以我想围绕这个编写一个 for 循环:

for (i in c("name", "age", "hgt"))
{
    for (k in c(1,20,38))
    {
    my.data$i,as.character(k) <- data.frame(get(paste(i,as.character(k),sep="")))
    }
}

但这行不通。这是因为我应该在其中一些代码周围编写“paste()”,还是这只是解决这个问题的一个坏方法?循环 i 和 k 并获得“newdata”数据帧作为最终结果并将所有向量作为附加列的正确方法是什么?

最佳答案

您是否正在尝试实现以下目标?

name1 <- letters[1:10]
age1 <- 1:10
name20 <- letters[11:20]
age20 <- 11:20
name38 <- LETTERS[1:10]
age38 <- 21:30

paste.pattern <- paste(rep(c("name", "age"), times = 3), 
                       rep(c(1, 20, 38), each = 2), sep = "")

newdata <- data.frame(sapply(paste.pattern, get))

关于r - 如何轻松地将多个向量组合成一个数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13105888/

相关文章:

python - 3维空间中点到线的最短距离

Javascript,比较数组中的元素,如果为 true 则执行函数

r - 如何更新 dplyr 管道中的值?

c++ - 如何在不重复的情况下随机迭代 vector 的每个元素

r - 对于每个唯一的 ID,我只想根据另一个字段的排名有一行

c++ - 无锁定的多个 vector 编写器

ios - C 风格的 for 语句已弃用,将来会被删除

javascript - 如何为 JavaScript 创建的每个 DIV 制作不同的 insideText?

r - 当向量很大时,如何获得 R 中向量的所有可能分区的列表?

r - 字符串中的字符频率