Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将向量附加到data.frames列表中?_R_List_Lapply_Sapply - Fatal编程技术网

如何将向量附加到data.frames列表中?

如何将向量附加到data.frames列表中?,r,list,lapply,sapply,R,List,Lapply,Sapply,如何在data.frames列表中查找/追加向量 l <- list(data.frame(a=c(1,2,3), b=c(1,2,3)), data.frame(a=c(1,2,3,4), b=c(1,2,3,4))) l file_name <- c("myfile.txt", "yourfile.txt") file_name 但我有一个错误: l[[x]]中出错:下标类型“列表”无效 我们可以使用Map为每个list`元素创建一个新的列“fname”,方法是将相应的“fil

如何在data.frames列表中查找/追加向量

l <- list(data.frame(a=c(1,2,3), b=c(1,2,3)), data.frame(a=c(1,2,3,4), b=c(1,2,3,4)))
l
file_name <- c("myfile.txt", "yourfile.txt")
file_name
但我有一个错误:

l[[x]]中出错:下标类型“列表”无效


我们可以使用
Map
为每个list`元素创建一个新的列“fname”,方法是将相应的“file\u name”附加到该列中

Map(cbind, l, fname = file_name)

如果我们使用的是
lappy
,则循环查看
列表的顺序

lapply(seq_along(l), function(i) transform(l[[i]], fname = file_name[i]))

只是为了确定。。您有以下data.frames列表

l <- list(data.frame(a=c(1,2,3), b=c(1,2,3)), data.frame(a=c(1,2,3,4), b=c(1,2,3,4)))
l
[[1]]
  a b
1 1 1
2 2 2
3 3 3

[[2]]
  a b
1 1 1
2 2 2
3 3 3
4 4 4
我们可以做的一个技巧是首先使用rbindlist将所有帧聚集在一起。。保留他们的身份证

L = rbindlist(l,idcol = TRUE)
假设我们还有一个列表,我们想附加到每个data.frame

v = list(data.frame(v = letters[1:3]), data.frame(v = LETTERS[1:4]))
V = rbindlist(v)
现在我们可以做一个简单的cbind,然后使用我们创建的.id拆分列表

result = cbind(L,V)
final_result = split(result,on = ".id")

    $`1`
   .id a b v
1:   1 1 1 a
2:   1 2 2 b
3:   1 3 3 c

$`2`
   .id a b v
1:   2 1 1 A
2:   2 2 2 B
3:   2 3 3 C
4:   2 4 4 D
我们仍然有一个.id列。。但是要想摆脱那一个不应该太麻烦

v = list(data.frame(v = letters[1:3]), data.frame(v = LETTERS[1:4]))
V = rbindlist(v)
result = cbind(L,V)
final_result = split(result,on = ".id")

    $`1`
   .id a b v
1:   1 1 1 a
2:   1 2 2 b
3:   1 3 3 c

$`2`
   .id a b v
1:   2 1 1 A
2:   2 2 2 B
3:   2 3 3 C
4:   2 4 4 D