动态调用 data.frame 并填充行
dynamically call data.frame and fill rows
我有以下问题:
我正在创建一个灵活数量的 data.frames(或者矩阵也可以完成这项工作),直到最后一个都被填充,它还没有满,因此应该区别对待
我现在想调用 data.frame platen
并想在之后用数据填充它。我想做一些像
assign(paste0("plate", n)[x,y], %some data%)
其中 [x,y]
是 data.frame(/matrix) 中的位置,n
是第 n 个 data.frame
然而它总是给我
incorrect number of dimensions
你不能。见 ?assign
:
‘assign’ does not dispatch assignment methods, so it cannot be
used to set elements of vectors, names, attributes, etc.
(如果你不能设置向量的元素,你也不能为数据帧做)。
最好创建一个 list 数据框,而不是手动标记 plate1
、plate2
等。例如,假设 plates
是一个 list
这样 plates[[1]]
是板 1,plates[[2]]
是板 2,等等:
n <- length(plates)
plates[[n]] # is the plateN dataframe
plates[[n]][x, y] <- some_data
在构造 plates
列表方面,这将取决于您的特定示例(您目前是如何做的),但 for
循环可能会在这里有所帮助,例如:
plates <- list()
# supposing you know `n`, the number of plates
for (i in 1:n) {
plates[[i]] <- code_that_constructs_the_dataframe
}
如果您喜欢冒险,lapply
非常好,例如
# suppose each plate was constructed by reading in a CSV
list_of_csvs <- list.files(pattern='*.csv')
plates <- lapply(list_of_csvs, read.csv)
# then plates[[1]] is the dataframe from the first csv, etc
但由于您似乎是 R 的新手,也许现在最好坚持使用 for
循环。
我有以下问题:
我正在创建一个灵活数量的 data.frames(或者矩阵也可以完成这项工作),直到最后一个都被填充,它还没有满,因此应该区别对待
我现在想调用 data.frame platen
并想在之后用数据填充它。我想做一些像
assign(paste0("plate", n)[x,y], %some data%)
其中 [x,y]
是 data.frame(/matrix) 中的位置,n
是第 n 个 data.frame
然而它总是给我
incorrect number of dimensions
你不能。见 ?assign
:
‘assign’ does not dispatch assignment methods, so it cannot be used to set elements of vectors, names, attributes, etc.
(如果你不能设置向量的元素,你也不能为数据帧做)。
最好创建一个 list 数据框,而不是手动标记 plate1
、plate2
等。例如,假设 plates
是一个 list
这样 plates[[1]]
是板 1,plates[[2]]
是板 2,等等:
n <- length(plates)
plates[[n]] # is the plateN dataframe
plates[[n]][x, y] <- some_data
在构造 plates
列表方面,这将取决于您的特定示例(您目前是如何做的),但 for
循环可能会在这里有所帮助,例如:
plates <- list()
# supposing you know `n`, the number of plates
for (i in 1:n) {
plates[[i]] <- code_that_constructs_the_dataframe
}
如果您喜欢冒险,lapply
非常好,例如
# suppose each plate was constructed by reading in a CSV
list_of_csvs <- list.files(pattern='*.csv')
plates <- lapply(list_of_csvs, read.csv)
# then plates[[1]] is the dataframe from the first csv, etc
但由于您似乎是 R 的新手,也许现在最好坚持使用 for
循环。