我有一个列表和一个数据框,如下所示:
name <- c("A","B","C","D","E")
n <- c("1, 2, 3, 4, 5, 6, 7, 8, 9, 10", "11, 12, 13, 14, 15", "16, 17, 18, 19, 20", "21, 22, 23, 24, 25", "26, 27, 28, 29, 30, 31, 32, 33, 34, 35")
type <- c("a", "b", "c", "d", "e")
list <- list(name=name, n=n)
df <- data.frame(name=name, type=type)
在哪里list
和df
看起来像这样:
> list
$name
[1] "A" "B" "C" "D" "E"
$n
[1] "1, 2, 3, 4, 5, 6, 7, 8, 9, 10" "11, 12, 13, 14, 15" "16, 17, 18, 19, 20" "21, 22, 23, 24, 25" "26, 27, 28, 29, 30, 31, 32, 33, 34, 35"
> df
name type
1 A a
2 B b
3 C c
4 D d
5 E e
我想使用left_join
in合并这两个对象dplyr
并将其内容存储df
为一个新的列表对象,list
其中如下所示:
> list
$name
[1] "A" "B" "C" "D" "E"
$n
[1] "1, 2, 3, 4, 5, 6, 7, 8, 9, 10" "11, 12, 13, 14, 15" "16, 17, 18, 19, 20" "21, 22, 23, 24, 25" "26, 27, 28, 29, 30, 31, 32, 33, 34, 35"
$type
[1] "a" "b" "c" "d" "e"
有没有人知道如何合并列表和数据框并将结果添加到列表中?我厌倦了下面的脚本,但它返回了一个错误。
> list %>% left_join(.$name, df.name, by="name")
Error in UseMethod("left_join") :
no applicable method for 'left_join' applied to an object of class "list"
我曾经R
用于更简单的数据操作,但从未将其用于此类文本操作。非常感谢您的建议。
我更喜欢在其中使用管道功能,dplyr
但解决方案不限于此包。预先感谢您的友好建议。
也许使用match
会更容易 -
list$target <- df$type[match(list$name, df$name)]
list
#$name
#[1] "A" "B" "C" "D" "E"
#$n
#[1] "1, 2, 3, 4, 5, 6, 7, 8, 9, 10"
#[2] "11, 12, 13, 14, 15"
#[3] "16, 17, 18, 19, 20"
#[4] "21, 22, 23, 24, 25"
#[5] "26, 27, 28, 29, 30, 31, 32, 33, 34, 35"
#$target
#[1] "a" "b" "c" "d" "e"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句