如何 populate/fill 具有另一个数据框的单元格值的数据框列

How to populate/fill a dataframe column with cell values of another dataframe

我有两个数据框

dataframe 1 有大约百万行..它有两列名为 'row' 和 'columns' 具有另一个数据帧(即数据帧 2)的行和列的索引..

我想从数据帧 2 中提取数据帧 1 中每一行的索引值,这些索引在名为 'row' 和 'columns' 的列中说明。

我使用了一个简单的 for 循环 来得到解决方案,但它很耗时,大约需要 9 分钟,R 中的函数是否有其他方法可以解决这个问题?

for(i in 1:nrow(datafram1)) {
  dataframe1$value[i] = dataframe2[dataframe1$row[i],dataframe1$columns[i]]
}

既然你的循环只考虑df1中的行,你可以削减df2上多余的roes然后使用cbind:

dataframe2 <- dataframe2[nrow(dataframe1),]
df3 <- cbind(dataframe1, dataframe2)

也许你可以试试下面的代码

dataframe1$value <- dataframe2[as.matrix(dataframe1[c("row","columns")])]

您实际上不需要 for 循环来执行此操作。只需使用行名和列名将新列添加到数据框中:

DataFrame1$value <- DataFrame2[DataFrame1$row, DataFrame1$column]

这应该会工作得更快。如果你想尝试不同的方式,你可以尝试将值添加到一个新的向量,然后使用 cbind 将向量连接到数据框。您试图在循环期间更新整个数据帧这一事实很可能会减慢速度。