我已经阅读了这篇文章,并创建了一个lapply函数,用于向列表中的每个数据帧添加“SubCat”列。
以下是我的代码:
my_list <- lapply(1:length(my_list),
function(i) cbind(my_list[[i]], my_list[[i]]["SubCat"] <- as.character("")))
但是出现了这个错误:
Error in `[<-.data.frame`(`*tmp*`, "SubCat", value = "") :
replacement has 1 row, data has 0
有什么问题吗?
当我在单个数据框上使用时,它可以正常工作:
my_list[[1]]["SubCat"] <- as.character("")
更新:
这些是我的数据框的示例,它们都具有相同的结构。一列用于SKU,另一列用于类别。
数据框1:
row.names SKU Tv.y.Video
1 1699 2018143169254P Tv.y.Video
2 1700 2018143169254 Tv.y.Video
3 1946 2018144678120P Tv.y.Video
4 1947 2018144678120 Tv.y.Video
5 2366 2018146411831P Tv.y.Video
6 2367 2018146411831 Tv.y.Video
数据框2:
row.names SKU C�mputo
1 6 2004121460000P C�mputo
2 7 2004121460000 C�mputo
3 8 2004121440002P C�mputo
4 9 2004121440002 C�mputo
5 10 2004123030003P C�mputo
6 11 2004123030003 C�mputo
当我将代码应用于一个数据框时,它可以正常工作:
my_list[[1]]["SubCat"] <- as.character("")
结果:
row.names SKU Tv.y.Video SubCat
1 1699 2018143169254P Tv.y.Video
2 1700 2018143169254 Tv.y.Video
3 1946 2018144678120P Tv.y.Video
4 1947 2018144678120 Tv.y.Video
5 2366 2018146411831P Tv.y.Video
6 2367 2018146411831 Tv.y.Video
更新1:
列表中还有一些空的data.frames。
Error in data.frame(..., check.names = FALSE) : arguments imply differing number of rows: 0, 1
- Omar Gonzales