总体情况:
我的测量设备的界面无法保存任何其他信息,但在测量其值时会生成csv的名称。所以我使用了一套系统的缩写来解释参数的变化,例如浓度,酶,饲料,缓冲液等。这组合形成了我的csv文件的标题,形成了data.frames的名称,我现在在哪里试图读出名称,将它们与其他数据结合起来,形成可用于回归的表格。
问题:
我刚注意到我在列表中丢失了data.frames
的名字,
我可以在每次调用lapply之后重命名它们,但这并不是一个合适的解决方案。
我找到了使用llply
的建议,但我不能教它保留名字。
# loads plyr package
library(plyr)
# generates a showcase list of dataframes,
data <- list(data.frame(c(1,2),c(3,3)),data.frame(c(1,2),c(3,3)),data.frame(c(1,2),c(3,3)),data.frame(c(1,2),c(3,3)))
# assigns names to dataframe
names(data) <- list("one","two", "tree", "four")
使用数据帧名称将“o”传递给一列,这部分工作正常, 但在运行它之后,名字就丢失了
data <- lapply(X = seq_along(data),
FUN = function(i){
x <- data[[i]]
if (gsub("([(a-z)]).*","\\1", names(data)[i]) == "o") {x$enz <- "o"}
return(x)},
USE.NAMES = TRUE)
与llply
相同,按预期运行,但不保留名称,尽管我认为我可以解决该特定问题(引用:“llply
等同于lapply,但它会保留标签并可以显示进度条。“)
data <- llply(seq_along(data), function(i){
x <- data[[i]]
if (gsub("([(a-z)]).*","\\1", names(data)[i]) == "o") {x$enz <- "o"}
return(x)})
我非常感谢提示如何解决这个问题,如
name(data) <- list.with.the.names
答案 0 :(得分:0)
做这样的事情:
for (i in seq_along(data)) data[[i]]$name <- names(data)[i]
do.call(rbind, data)
# c.1..2. c.3..3. name
#one.1 1 3 one
#one.2 2 3 one
#two.1 1 3 two
#two.2 2 3 two
#tree.1 1 3 tree
#tree.2 2 3 tree
#four.1 1 3 four
#four.2 2 3 four
从那里继续。