小编Tom*_*m A的帖子

仅从R中的.csv文件导入每第N行

只是一个简单的问题.有没有办法使用read.csv从大文件导入每个第N行:

例如,一个50-60万行文件,你只需要从第2行开始的每第4行.

我想过可能会加入'seq'功能,但我不确定这是否可行.

有什么建议?

csv import text r

9
推荐指数
3
解决办法
5048
查看次数

R - 基本理解使用'apply'而不是嵌套循环

所以我是R的新手(我来自Python背景),我仍然有一些问题,了解如何/何时实现apply函数(lapply,sapply,rapply等)而不是嵌套循环.

例如,假设您想要执行一些函数FUN,它将列表的每个元素与另一个列表的每个元素进行比较.我会写一些类似的东西:

n = 1
m = 1
sameList = NULL
for(i in 1:length(list1)){
    for(j in 1:length(list2)){
        if(list1[n]==list2[m]){
            sameList<-c(sameList, list1[n]}
    n = n+1
    }
m = m+1
}
Run Code Online (Sandbox Code Playgroud)

换句话说,一些嵌套循环遍历每个列表的每个元素.

我正在学习的是,在循环中连接列表是R中非常低效的过程,这就是使用的原因apply.

那么如何apply(或任何版本的)用于替换上面的示例代码?

performance for-loop nested r apply

6
推荐指数
1
解决办法
7478
查看次数

矩阵不被视为数字 R

所以我将数据帧转换为 as.matrix(df):

m<-as.matrix(df)
Run Code Online (Sandbox Code Playgroud)

但是之后:

> is.numeric(m)
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

我什至试图看看矩阵中的某个单一因素是否是数字:

> is.numeric(m[15,15])
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

还有其他人发生过这种情况吗?

r matrix dataframe

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

使用 data.table 的字符串匹配不完美

好的,所以我不久前发布了一个关于编写 R 函数来加速大文本文件的字符串匹配的问题。我对“data.table”睁大了眼睛,我的问题得到了完美的回答。

这是该线程的链接,其中包含所有数据和详细信息:

提高 R 中字符串匹配的性能和速度

但现在我遇到了另一个问题。有时,由于人为错误,提交的 VIN#s(在“vinDB”文件中)与“carFile”文件中的一两个字符不同,因为他们在 DMV 填写汽车信息时出现了人为错误。有没有办法编辑

dt[J(car.vins), list(NumTimesFound=.N), by=vin.names]
Run Code Online (Sandbox Code Playgroud)

该代码行(由上面链接中的@BrodieG 提供)以允许识别相差一两个字符的 VIN#?

如果这是一个简单的更正,我深表歉意。R 中“data.table”包的强大功能让我不知所措,我很想尽可能多地了解它的实用性,而且该论坛知识渊博的成员对我来说绝对是至关重要的。

**编辑:

所以我一直在按照建议使用“lapply”和“agrep”函数,我一定是做错了什么:

我尝试更换这一行:

dt[J(car.vins), list(NumTimesFound=.N), by=vin.names]
Run Code Online (Sandbox Code Playgroud)

有了这个:

dt <- dt[lapply(vin.vins, function(x) agrep(x,car.vins, max.distance=2)), list(NumTimesFound=.N), vin.names, allow.cartesian=TRUE]
Run Code Online (Sandbox Code Playgroud)

但得到以下错误:

Error in `[.data.table`(dt, lapply(vin.vins, function(x) agrep(x,car.vins,  : 
x.'vin.vins' is a character column being joined to i.'V1' which is type 'integer'. 
Character columns must join to factor or character columns.
Run Code Online (Sandbox Code Playgroud)

但它们都是“chr”类型。有谁知道为什么我会收到这个错误?我是否以正确的方式思考这个问题,即:我在这里正确使用 lapply 吗?

谢谢!

string performance text r data.table

4
推荐指数
1
解决办法
1478
查看次数

R中的agrep max.distance参数

我需要一些帮助来解决R中agrep包的具体参数.

就成本而言,所有,插入,删除和取代均具有"取代的最大数量/分数"整数或分数输入参数.

我已阅读有关它的文档,但我仍然无法弄清楚一些细节:

  • "cost = 1"和"all = 1"有什么区别?
  • 如何解释小数,例如"cost = 0.1","inserts = 0.9","all = 0.25"等?
  • 我理解Levenshtein距离的基础知识,但它如何应用于成本或所有参数?

对不起,如果这是相当基本的,但就像我说的,我读过的文档有点令人困惑.

提前致谢

string grep r string-matching agrep

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

在数据框的列中使用gsub或grep

我有一个数据框列,看起来像这样:

>df[,2]

A    
10
10.1
10a
10a.1
12a.6
13b
17
3c.3
Run Code Online (Sandbox Code Playgroud)

除了列大约70,000行.我想查找并删除仅出现在列中因子末尾的所有小数.

基本上,我如何正确实现'grep()'或'gsub()'函数?

grep r gsub dataframe

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

提高 R 中字符串匹配的性能和速度

我有性能问题需要帮助。请耐心等待我的解释:

我有一个已知汽车 Vin# 和年份的数据库(为方便起见,仅显示前 4 行 ~5,000 行):

>vinDB
>ToyotaCarola 2008
 IJDINJNDJIJKNDJIMKDK0897
 NissanAltima 1998
 LJIODJJNJDJNJDNJNJDJ7765
Run Code Online (Sandbox Code Playgroud)

我还有一个 .txt 文档,其中通过以下方式显示了唯一的 DMV ID、车辆识别号和参考号(为方便起见,仅显示了 4 行约 5500 万行):

>carFile
>#DMVcorrNumber33:1245638:563892:6378
 IJDINJNDJIJKNDJIMKDK0897
 +
 VIN#IDref6388546
 #DMVcorrNumber33:1245638:563892:6378
 LJIODJJNJDJNJDNJNJDJ7765
 +
 VIN#IDref2453663
Run Code Online (Sandbox Code Playgroud)

我想要做的是扫描“vinDB”文件中的每隔一行(VIN#)与“carFile”文件中的每隔四行(从第二行开始)进行完美匹配。如果匹配存在,我想输出汽车的名称,以及它在“carFile”文件中出现的次数。

所以基本上,我需要这个:

    Car          Year     NumTimesFound
ToyotaCarola     2008          238
NissanAltima     1998          1755
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有以下代码,它适用于截断的“carFile”文件,但当我尝试使用大约 5500 万行时,我的 R 程序崩溃了:

VinCounter<-function(carFile, vinDB)

{
i=1   #index inner while loop
j=1   #index outer while loop
m=2   #index of vinDB, starts at '2' because first VIN# is on line 2
s=2   #index of carFile …
Run Code Online (Sandbox Code Playgroud)

string performance r

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

在R中使用'stringdist'和'amatch'进行字符串匹配

对于熟悉"stringdist"软件包的人来说,这是一个问题.

我正在尝试编写一个执行以下操作的函数:

搜索很长的字符列表,例如显示的字符数量只有16个:

> stripList
[1] "AAAAAAAAAAAAAAAAAAAAAAAAAAAADAABAAADCDDAD" "BAAAABBBDACDBABAAADDCBDADBCCBDCDDCDBCDDBA"
[3] "BDDABDCCAAABABBAACADCBDADBCCBDCDDCDBCDDBA" "AADBBACDDDBABDCABAADBCADCBDDDCCC"         
[5] "BBCDBBDCCBABDBCABDBBDBDDDADCDDADDDCDDCDDD" "BDDCDACABDCCBACBADCDCBDADBCCBDCDDCDDCDDBA"
[7] "BCDBADCBBDDBBBBDCBDADBCCBDCDDCDBCDDDDAAAA" "DABDDCDACABDCCBACBADC"                    
[9] "CABABDDCCCCACDCCDCCDADCAAAAAAAAACADADDADA" "BAABCBBBDBCDCDDADDDDCDDADBCCBDCDD"        
[11] "BBDDDACDCABDDDBBACDCBDADBCCDDCDDCDDCDDBDD" "BDDABDCCAAABABBBACADCBDADBCCBDCDDCDBCDDBA"
[13] "BDDBBBBDDBDABBACDBDCBDADBCCBDCDD"          "BDDABDCCAAABABBBACADCBDADBCCBDCDDCDBCDDBA"
[15] "DABDDCDACABDCCBACBADC"                     "BBADBACDDBABAACABCABCDCBDADBCCBDCDDCDDDDD"
Run Code Online (Sandbox Code Playgroud)

对于像这样构造的查询序列列表的每个序列的实例.

例如:

SeqName1              # queryNames
BBCDBBDCCBABDBCA      # querySeqs

SeqName2              # queryNames
BBBDCCDCCCCDDDCAAACD  # querySeqs
Run Code Online (Sandbox Code Playgroud)

我想查看查询序列在我的任何'stripList'中出现多少次(如果有的话)并允许1次插入,1次删除,1次替换和1次转置,并获得如下输出:

>dt
 queryNames    TimesFound
 SeqName1           5
 seqName2          145
Run Code Online (Sandbox Code Playgroud)

为此,我使用'stringdist'包的'amatch'功能,方法如下:

dt<-rapply(as.list(querySeqs), function(x) amatch(x, stripList, method = "osa", useBytes = TRUE, weight = c(d = 0.5, i = 0.5, s = 0.9, t = 0.9), maxDist=0.9))
dt<-data.frame(dt)
colnames(dt) <- …
Run Code Online (Sandbox Code Playgroud)

string r match string-matching stringdist

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

rCharts和Shiny - 情节没有显示出来

所以我试图用rCharts构建一个Shiny应用程序.当我运行以下代码(下面)时,我没有错误,侧边栏面板滚动条显示,但是没有生成条形图本身.(如果我只是从R Studio运行nPlot()函数,它工作正常).

server.R:

require(rCharts)
require(shiny)
# random data:
smpl<-data.frame(gene = c("gene1","gene2","gene3","gene4","gene5",
                          "gene6","gene7","gene8","gene9","gene10"),
                 direction = c("up","down","up","up","up",
                               "up","up","down","down","down"),
                 type = c("norm","norm","tum","tum","norm",
                          "tum","tum","norm","tum","tum"),
                 foldChange = c(1.3, 0.4, 1.3, 3.0, 1.6,
                                2.9, 1.3, 0.5, 0.5, 0.6))
shinyServer(function(input, output) {
  output$myChart <- renderChart({
    n <- subset(smpl, type == input$x)
    p1 <- nPlot(foldChange ~ gene, group = "direction", n, 
          type = 'multiBarChart')

    p1$set(dom = 'myChart')
    return(p1)
  })
})
Run Code Online (Sandbox Code Playgroud)

ui.R

require(rCharts)
require(shiny)

shinyUI(pageWithSidebar(
  headerPanel("Sample Bar Plot"),

  sidebarPanel(
    selectInput(inputId = "x",         
                label = "Select:",
                choices = c("norm","tum"),
                selected …
Run Code Online (Sandbox Code Playgroud)

r shiny shiny-server rcharts

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

包'rjson'的R - twitteR软件包下载失败了

我正在尝试一些数据挖掘并尝试从Twitter检索数据.

当我尝试安装包'twitteR'时,我收到以下警告:

Warning in install.packages :
  download of package ‘rjson’ failed
Run Code Online (Sandbox Code Playgroud)

但它加载了其余的包.然后,当我尝试调用库时:

> library(twitteR)
Loading required package: ROAuth
Loading required package: RCurl
Loading required package: bitops

Attaching package: ‘RCurl’

The following object is masked from ‘package:tm.plugin.webmining’:

    getURL

Loading required package: digest
Error: package ‘rjson’ required by ‘twitteR’ could not be found
Run Code Online (Sandbox Code Playgroud)

如果它最初无法下载'rjson'软件包,这是有道理的.

当我尝试单独安装'rjson'软件包时,我得到一个熟悉的错误:

> install.packages("rjson")
trying URL 'http://cran.rstudio.com/bin/macosx/contrib/3.0/rjson_0.2.13.tgz'
Warning in install.packages :
  cannot open: HTTP status was '404 Not Found'
Error in download.file(url, destfile, method, mode = "wb", ...) : …
Run Code Online (Sandbox Code Playgroud)

twitter r data-mining sentiment-analysis

0
推荐指数
1
解决办法
2713
查看次数