相关疑难解决方法(0)

组合不同长度的(cbind)向量

我有几个长度不等的向量,我想要cbind他们.我把矢量放到一个列表中,我试图结合使用do.call(cbind, ...):

nm <- list(1:8, 3:8, 1:5)
do.call(cbind, nm)

#      [,1] [,2] [,3]
# [1,]    1    3    1
# [2,]    2    4    2
# [3,]    3    5    3
# [4,]    4    6    4
# [5,]    5    7    5
# [6,]    6    8    1
# [7,]    7    3    2
# [8,]    8    4    3
# Warning message:
#   In (function (..., deparse.level = 1)  :
#         number of rows of result is not a multiple of vector …
Run Code Online (Sandbox Code Playgroud)

merge r list matrix

30
推荐指数
2
解决办法
4万
查看次数

将不等长的矢量组合成数据帧

我有一个矢量列表,它们是不等长度的时间序列.我的最终目标是在图表中绘制时间序列ggplot2.我想我最好首先合并数据帧中的向量(其中较短的向量将使用NA扩展),这也是因为我想以表格格式(例如.csv)导出数据以供其他人阅读.

我有一个包含所有向量名称的列表.列标题可以由第一个向量设置,这是最长的.例如:

> mylist
[[1]]
[1] "vector1"

[[2]]
[1] "vector2"

[[3]]
[1] "vector3"
Run Code Online (Sandbox Code Playgroud)

等等

我知道要走的路是使用Hadley的plyr包但我想问题是我的列表包含向量的名称,而不是向量本身,所以如果我输入:

do.call(rbind, mylist)
Run Code Online (Sandbox Code Playgroud)

我得到一个包含我想要合并的dfs名称的单列df.

> do.call(rbind, actives)
      [,1]           
 [1,] "vector1" 
 [2,] "vector2" 
 [3,] "vector3" 
 [4,] "vector4" 
 [5,] "vector5" 
 [6,] "vector6" 
 [7,] "vector7" 
 [8,] "vector8" 
 [9,] "vector9" 
[10,] "vector10"
Run Code Online (Sandbox Code Playgroud)

等等

即使我自己创建了一个包含对象的列表,我也会获得一个空的数据帧:

mylist <- list(vector1, vector2)
mylist
[[1]]
        1         2         3         4         5         6         7         8         9        10        11        12 
0.1875000 0.2954545 0.3295455 0.2840909 0.3011364 0.3863636 0.3863636 0.3295455 0.2954545 0.3295455 0.3238636 0.2443182 …
Run Code Online (Sandbox Code Playgroud)

r

11
推荐指数
1
解决办法
3万
查看次数

从R中的语料库计算单个文档中的单词并将其放入数据框中

我有文本文档,在每个文档中我都有电视剧剧集的文字.每个文件都是不同的系列.我想比较每个系列中最常用的单词,我想我可以使用ggplot绘制它们,并且在一个轴上有'系列1术语至少出现x次',''系列2术语至少出现x次' 另外一个.我希望我需要的是一个包含3列'Terms','Series x','Series Y'的数据帧.系列x和y具有该单词出现的次数.

我尝试了多种方法来做到这一点但失败了.我最接近的是我可以阅读语料库并创建一个包含一列中所有术语的数据框,如下所示:

library("tm")

corpus <-Corpus(DirSource("series"))
corpus.p <-tm_map(corpus, removeWords, stopwords("english"))  #removes stopwords
corpus.p <-tm_map(corpus.p, stripWhitespace)  #removes stopwords
corpus.p <-tm_map(corpus.p, tolower)  
corpus.p <-tm_map(corpus.p, removeNumbers)
corpus.p <-tm_map(corpus.p, removePunctuation)
dtm <-DocumentTermMatrix(corpus.p)
docTermMatrix <- inspect(dtm)
termCountFrame <- data.frame(Term = colnames(docTermMatrix))
Run Code Online (Sandbox Code Playgroud)

然后我知道我可以添加一个列添加如下的单词:

termCountFrame$seriesX <- colSums(docTermMatrix)
Run Code Online (Sandbox Code Playgroud)

但是当我只想要一个时,这会增加两个文件的出现次数.

所以我的问题是:

1)是否可以在单个doc上使用colSums,如果没有,是否有另一种方法可以将doctermmatrix转换为具有每个文档的术语计数的数据帧

2)是否有人知道如何限制这一点,以便我在每个文档中获得最常用的术语

r corpus text-mining dataframe

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

r ×3

corpus ×1

dataframe ×1

list ×1

matrix ×1

merge ×1

text-mining ×1