У меня есть список фреймов данных, на которых нужно выполнить функцию lapply.Цель состоит в том, чтобы добавить новый столбец symbol
к каждому фрейму данных путем сопоставления по именам строк с другим эталонным фреймом данных.Это прекрасно работает в незапросной форме:
df1$symbol <- dds$symbol[ match(rownames(df1), rownames(dds)) ]
, но не удается при нескольких попытках синтаксиса.Похоже, самое близкое к этому:
result_list <- c("df1", "df2", "df3")
lapply(result_list, function(x) {
x$symbol <- dds$symbol[ match(rownames(x), rownames(dds)) ]
})
[[1]]
character(0)
[[2]]
character(0)
[[3]]
character(0)
Warning messages:
1: In x$symbol <- mcols(dds)$symbol[match(rownames(x), rownames(dds))] :
Coercing LHS to a list
2: In x$symbol <- mcols(dds)$symbol[match(rownames(x), rownames(dds))] :
Coercing LHS to a list
3: In x$symbol <- mcols(dds)$symbol[match(rownames(x), rownames(dds))] :
Coercing LHS to a list
Или поочередно:
lapply(result_list, function(x) {
x[["symbol"]] <- dds$symbol[ match(rownames(x), rownames(dds)) ]
})
Error in x[["symbol"]] <- dds$symbol[ match(rownames(x), rownames(dds)) ] :
replacement has length zero
lapply(result_list, function(x) {
x[["symbol"]] <- dds[["symbol"]][ match(rownames(x), rownames(dds)) ]
})
Error in x[["symbol"]] <- dds[["symbol"]][ match(rownames(x), rownames(dds)) ] :
replacement has length zero