通过列表的元素名称=数据框行号从列表中的数据框中分配值

Assign value in dataframe from list by list's element name = dataframe row number

我有一个名单,例如:

> myNamedList

(...)

$`1870`
[1] 84.24639

$`1871`
[1] 84.59707

(...)

我想在数据框的列中分配这些值,其中列表元素的名称对应于数据框的行号。现在我是这样进行的:

for (element in names(myNamedList)) {
  targetDataFrame[as.numeric(element),][[columnName]] = myNamedList[[element]]
}

如果列表有点大,这会很慢,而且也不是很 R-esque。我相信我可以用 apply 做点什么,但我不确定去哪里找。感谢您的帮助。

向原始数据添加行号,然后堆叠列表,然后合并。参见示例:

# example
#data
set.seed(1); d <- data.frame(x = sample(LETTERS, 5))
#named list
x <- list("2" = 11, "4" = 22)

#add a row number
d$rowID = seq(nrow(d))

# stack the list, and merge
merge(d, stack(x), by.x = "rowID", by.y = "ind", all.x = TRUE)
#   rowID x values
# 1     1 Y     NA
# 2     2 D     11
# 3     3 G     NA
# 4     4 A     22
# 5     5 B     NA