将data.frame数据添加到输出列表的最佳方法?
我有一个主数据框,我想从中提取数据:将data.frame数据添加到输出列表的最佳方法?,r,list,dataframe,R,List,Dataframe,我有一个主数据框,我想从中提取数据: position = c(1:20) transfer_budget = seq(100, 10, length.out=20) df = data.frame(position, transfer_budget) rownames(df) = c("CHE","TOT","MCY","LIV", "MUN", "ARS", "EVE", "WBA", "STK", "SOU", "BOU", "WHM", "BUR", "WAT", "LEI", "CR
position = c(1:20)
transfer_budget = seq(100, 10, length.out=20)
df = data.frame(position, transfer_budget)
rownames(df) = c("CHE","TOT","MCY","LIV", "MUN", "ARS", "EVE", "WBA", "STK", "SOU", "BOU", "WHM", "BUR", "WAT", "LEI", "CRY", "SWA", "HUL", "MID", "SUN")
我创建了一个相当复杂的代码,将某些足球队划分为若干组,并以列表的形式输出
my_list = list()
my_list[[1]] = c("MUN","MCY","CHE","ARS","LIV")
my_list[[2]] = c("BUR","SOU","BOU","STK","ARS")
my_list[[3]] = c("EVE","SUN","SWA","HUL","LEI")
my_list[[4]] = c("MCY","LIV","CHE","WBA")
my_list[[5]] = c("LEI","TOT","BOU")
我想在添加额外数据时扩展输出,但是我不确定最有效的方法是什么?我将如何添加该职位并将_预算转移到我的_列表中
目前我将团队名称作为行名称,在数据框中将它们作为列是否更好?我最初的想法是将输出列表转换为转置矩阵,然后匹配值,然后cbind,但我不想养成坏习惯。我们可以通过在
列表上循环,将与数据集'df'的行名匹配,并创建数据.frame
my_list1 <- lapply(my_list, function(x) {
`row.names<-`(transform(df[match(x, row.names(df)),], teamNames = x), NULL)})
my_list1[[1]]
# position transfer_budget teamNames
#1 5 81.05263 MUN
#2 3 90.52632 MCY
#3 1 100.00000 CHE
#4 6 76.31579 ARS
#5 4 85.78947 LIV
my_list1是否有任何模式可以将每个list
元素分组不特别是,我应该注意到我的列表在我的模型中也有不同的长度。我猜您希望添加position和transfer_budget的匹配元素,对吗?是的!实际上,我有更多的数据,但没有必要在上面添加。lappy(我的列表,函数(x)df[match(x,row.names(df)),c(“position”,“transfer\u budget”))
初学者问题,但是你如何将团队名称作为第一列?@Aesler你可以做cbind
即lappy(我的列表,函数(x){cbind(TeamNames=x,df[匹配(x,row.names(df)),]})