Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.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
R 透视包含列表的数据帧_R - Fatal编程技术网

R 透视包含列表的数据帧

R 透视包含列表的数据帧,r,R,这是我试图改变的数据框架,或者更确切地说,重塑: Value Word list 1 c("cat", "dog") 1 c("apple", "banana") 2 c("cat", "dog") 2 c("peach", "orange") 3 c("cat", "dog") 3 c("berries", "coconut") 下面是

这是我试图改变的数据框架,或者更确切地说,重塑:

  Value            Word list
    1        c("cat", "dog")
    1        c("apple", "banana")
    2        c("cat", "dog")
    2        c("peach", "orange")
    3        c("cat", "dog")
    3        c("berries", "coconut")
下面是期望的结果(基本上只是将具有相同
值的元素组合在一起,通过
得到一个大的
列表
):

提前感谢所有能够提供帮助的人(也感谢所有已经为我评论/编辑了我可怜的帖子的人)

为了让你们知道为什么我在数据框中得到一个列表,我实际上在做词性标记。在使用str_split分解注释列之后,我在数据框中得到了一个列表,因为每个注释的长度都不同。每个评论都有一个分数,我需要根据分数创建一个单词包数据框

根据您的请求,>str(df1):

和>dput(df1):


这里我使用了
数据。表

library(data.table); setDT(df)

df[, .(word_list = list(unlist(Word.list))), by = Value]
#    Value               word_list
# 1:     1    cat,dog,apple,banana
# 2:     2    cat,dog,peach,orange
# 3:     3 cat,dog,berries,coconut

unlist
递归地将每个
Value
中的
Word.list
的所有元素拉入一个向量。然后我们将它们返回到
列表
,最后将所有内容包装在命名的
列表
中以创建列(命名的
列表
被屏蔽,因为
数据表
相同)。本可以使用
list(word\u list=…)
但我认为单词列表已经足够关注一个答案了。

我们也可以使用
dplyr/tidyr

library(dplyr)
library(tidyr)
unnest(df1, Wordlist) %>% 
            group_by(Value) %>% 
            nest(Wordlist)
数据
df1Base R解决方案,使用@akrun的数据设置:

aggregate(df1$Wordlist,list(df1$Value),unlist,simplify=FALSE)

如果这很重要,其他解决方案可能会更快。

@zx8754您好,因为拼写问题,4张反对票?我甚至不是以英语为母语的人。。。为什么这么严格?为什么我不能提前感谢别人呢?欢迎来到StackOverflow!请阅读相关信息以及如何给出建议。这将使其他人更容易帮助你。我怀疑落选是因为拼写错误。我试图使这篇文章更具可读性,简洁,没有杂乱(是的,这包括“谢谢”,请随意回复原文)。还是在我编辑之后,你的帖子并没有达到一篇好帖子的最低要求。阅读上面评论的帖子。是的,用最低要求更新你的帖子,你很可能会得到答案。在您的帖子更新之前,被否决的用户不能向上投票。如果您可以显示
str(您的_数据)
dput(您的_数据)
,这将非常有用;包含列表的数据帧在R中是不常见的,正确的答案实际上取决于数据的实际结构@罗尔试图猜测@michaelchirico,你是如何设置df的?
library(data.table); setDT(df)

df[, .(word_list = list(unlist(Word.list))), by = Value]
#    Value               word_list
# 1:     1    cat,dog,apple,banana
# 2:     2    cat,dog,peach,orange
# 3:     3 cat,dog,berries,coconut
library(dplyr)
library(tidyr)
unnest(df1, Wordlist) %>% 
            group_by(Value) %>% 
            nest(Wordlist)
df1 <- data.frame(Value = c(1, 1, 2, 2, 3, 3),
    Wordlist = I(list(c('cat', 'dog'), c("apple", "banana") , 
 c("cat", "dog") , c("peach", "orange") , c("cat", "dog") , 
 c("berries", "coconut"))))
aggregate(df1$Wordlist,list(df1$Value),unlist,simplify=FALSE)