首页 > 解决方案 > 将数据帧列表与字符列表配对

问题描述

我有一个数据框列表

df1=data.frame(yield=c(7,4,8),temp=c(25,28,30)) 
df2=data.frame(yield=c(6,5,8),temp=c(26,25,26))
df3=data.frame(yield=c(3,4,7),temp=c(31,28,27)) 

l1=list(df1,df2,df3)

和一个字符列表

l2=list("high N","mid N","low N")

我试图在每个数据框中创建一个名为“trt”的变量,并用字符列表的每个元素填充它。

在一个数据帧上,它看起来像:

df1$trt=l2[[1]]

但是当我尝试使用它时,我无法完全得到我正在寻找的东西。

我试过:

l3=lapply(l1,function(x) x$trt=l2)

l3=lapply(l1,function(x,y) x$trt=l2[[y]])

任何帮助是极大的赞赏!

标签: rlistdataframevector

解决方案


不完全确定您的预期,但请尝试Map

Map(`[<-`, l1, i = "trt", value = l2)
  yield temp    trt
1     7   25 high N
2     4   28 high N
3     8   30 high N

[[2]]
  yield temp   trt
1     6   26 mid N
2     5   25 mid N
3     8   26 mid N

[[3]]
  yield temp   trt
1     3   31 low N
2     4   28 low N
3     7   27 low N

推荐阅读