小编Chr*_*ris的帖子

使用XLConnect读取包含缺失值的.xls文件

当使用XLConnect读取.xls文件时,如何设置缺失值.类似于中的na.string==c()论点read.csv.

我目前的R代码如下所示:

install.packages("XLConnect")
library(XLConnect)

excel.file <- file.path(".../FakeData.xls")
fake2 <- readWorksheetFromFile(excel.file, sheet="Sheet1", header=TRUE)
Run Code Online (Sandbox Code Playgroud)

我的假数据看起来像这样:

ID  Age Weight      Gender
1   30  55          M
2   22  NA          F
3   33  80          NA
Run Code Online (Sandbox Code Playgroud)

我希望我的NA值被解释为缺失,因此权重和性别分别作为数字/因子变量读入R中.目前,由于NA值,它们正在转换为字符变量.

当我尝试:

setMissingValue(fake2, value = c("NA"))
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error in (function (classes, fdef, mtable)  : 
unable to find an inherited method for function ‘setMissingValue’ for signature ‘"data.frame"’
Run Code Online (Sandbox Code Playgroud)

excel r

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

将.tar.gz文件的内容从网站读入python 3.x对象

我是python的新手.在尝试将.tar.gz文件的内容读入python时,我无法弄清楚我做错了什么.我想阅读的tarfile托管在以下网址:

ftp://ftp.ncbi.nlm.nih.gov/pub/pmc/b0/ac/Breast_Cancer_Res_2001_Nov_9_3(1)_61-65.tar.gz

更多关于这个网站的信息(这样你可以信任内容) http://www.pubmedcentral.nih.gov/utils/oa/oa.fcgi?id=PMC13901

tarfile包含期刊文章的.pdf和.nxml副本.还有一些图像文件.

如果我通过复制和粘贴在浏览器中打开文件.我可以保存到我的PC上的某个位置并使用以下命令导入tarfile(注意:当我保存到位置时,winzip将文件从.tar.gz更改为.tar):

import tarfile
thetarfile = "C:/Users/dfcm/Documents/Breast_Cancer_Res_2001_Nov_9_3(1)_61-65.tar"
tfile = tarfile.open(thetarfile)
tfile
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用类似的命令直接访问该文件:

thetarfile = "ftp://ftp.ncbi.nlm.nih.gov/pub/pmc/b0/ac/Breast_Cancer_Res_2001_Nov_9_3(1)_61-65.tar.gz"
bbb = tarfile.open(thetarfile)
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误:

 Traceback (most recent call last):
 File "<pyshell#137>", line 1, in <module>
 bbb = tarfile.open(thetarfile)
 File "C:\Python30\lib\tarfile.py", line 1625, in open
 return func(name, "r", fileobj, **kwargs)
 File "C:\Python30\lib\tarfile.py", line 1687, in gzopen
 fileobj = bltn_open(name, mode + "b")
 File "C:\Python30\lib\io.py", line 278, in __new__
 return open(*args, **kwargs)
 File "C:\Python30\lib\io.py", line 222, in open
 closefd)
 File "C:\Python30\lib\io.py", line 615, …
Run Code Online (Sandbox Code Playgroud)

python tar tarfile python-3.x

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

R子集数据集使用正则表达式

有没有办法让下面的R代码运行得更快(即矢量化以避免使用for循环)?

我的例子包含两个数据帧.首先是尺寸n1*p.其中一列包含名称.第二数据帧是列向量(n2*1).它也包含名称.我想保留第一个数据帧的所有行,其中第二个数据帧的列向量中的某些名称部分出现在相应的第一个数据帧中.抱歉残酷的解释.

示例(数据框1):

x        y 
Doggy    1 
Hello    2 
Hi Dog   3 
Zebra    4 
Run Code Online (Sandbox Code Playgroud)

示例(数据框2)

z
Hello
Dog
Run Code Online (Sandbox Code Playgroud)

所以在上面的例子中我想保留1,2,3行而不是4.因为"Dog"出现在"Doggy"和"Hi Dog"中."Hello"出现在"Hello"中.排除第四行,因为"Zebra"中没有出现"Hello"或"Dog"的部分.

下面是我执行此操作的R代码...运行正常.但是,对于我的真正任务.数据帧1有100万行,数据帧2有50个要匹配的项目.所以运行得很慢.任何关于如何加快这一点的建议都值得赞赏.

x <- c("Doggy", "Hello", "Hi Dog", "Zebra")
y <- 1:4
dat <- as.data.frame(cbind(x,y))
names(dat) <- c("x","y")

z <- as.data.frame(c("Hello", "Dog"))
names(z) <- c("z")

dat$flag <- NA
for(j in 1:length(z$z)){
for(i in 1:dim(dat)[1]){ 

    if ( is.na(dat$flag[i])==TRUE ) {
        dat$flag[i] <- length(grep(paste(z[j,1]), dat[i,1], perl=TRUE, value=TRUE))
    } else {

    if (dat$flag[i]==0) {
        dat$flag[i] <- length(grep(paste(z[j,1]), dat[i,1], perl=TRUE, value=TRUE))

    } else { 

    if …
Run Code Online (Sandbox Code Playgroud)

regex r subset

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

RCharts scatterChart增强功能

我正在尝试将RChart嵌入到闪亮的应用程序中.我特意使用该nPlot函数来创建type=scatterChartNVD3样式图.在下面的NVD3网站示例中,我有兴趣在我的RCharts闪亮应用程序中工作的两个功能:

http://nvd3.org/ghpages/scatter.html

  1. 看起来沿着上述示例的x轴和y轴包括"地毯",略微证明了x和y点沿着它们各自的支撑最频繁出现的位置.
  2. 此外,当一个人点击图表并悬停在特定点上时,会出现一条垂直和水平线,注意到相应点的(x,y)位置.

有谁知道如何扩展我的代码以实现这两个功能.闪亮的server.r和ui.r脚本包含在下面.

## server.r
library(rCharts)
library(shiny)

x <- rnorm(100)
y <- rnorm(100)
dat <- as.data.frame(cbind(x,y))

shinyServer(function(input, output) {

output$myChart <- renderChart({

p1 <- nPlot(y ~ x, data = dat, type = "scatterChart")

p1$addParams(dom = 'myChart')

p1$params$height=400
p1$params$width=650

return(p1)
})

})

## ui.R
library(rCharts)
library(shiny)

shinyUI(pageWithSidebar(
headerPanel("rCharts: Interactive Charts from R using NVD3.js"),

sidebarPanel(

wellPanel(
    helpText(   "Look at the pretty graph"
    )
    ),

wellPanel(
    helpText(   "Look at the pretty graph"
    )
    ),

wellPanel(
    helpText( …
Run Code Online (Sandbox Code Playgroud)

r nvd3.js rcharts

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

将内容Tarfile读入Python - "不允许向后搜索"

我是python的新手.我无法将tarfile的内容读入python.

数据是期刊文章的内容(在pubmed中心托管).请参阅以下信息.并链接到我想读入Python的tarfile.

http://www.pubmedcentral.nih.gov/utils/oa/oa.fcgi?id=PMC13901 ftp://ftp.ncbi.nlm.nih.gov/pub/pmc/b0/ac/Breast_Cancer_Res_2001_Nov_9_3(1)_61 -65.tar.gz

我有一个类似的.tar.gz文件列表,我最终也想读.我认为(知道)所有tarfiles都有一个与之关联的.nxml文件.它是我实际感兴趣的.nxml文件的内容是提取/读取.打开任何有关最佳方法的建议......

如果我将tar文件保存到我的PC,这就是我所拥有的.全部按预期运行.

tarfile_name = "F:/PMC_OA_TextMining/Breast_Cancer_Res_2001_Nov_9_3(1)_61-65.tar.gz"
tfile = tarfile.open(tarfile_name)

tfile_members = tfile.getmembers()

tfile_members1 = []
for i in range(len(tfile_members)):
tfile_members_name = tfile_members[i].name
tfile_members1.append(tfile_members_name)

tfile_members2 = []
for i in range(len(tfile_members1)):
if tfile_members1[i].endswith('.nxml'):
    tfile_members2.append(tfile_members1[i])

tfile_extract1 = tfile.extractfile(tfile_members2[0])
tfile_extract1_text = tfile_extract1.read()
Run Code Online (Sandbox Code Playgroud)

我今天了解到,为了直接从pubmed中心FTP站点访问tarfile,我必须使用设置网络请求urllib.下面是修改后的代码(以及我收到的stackoverflow回答的链接):

将.tar.gz文件的内容从网站读入python 3.x对象

tarfile_name = "ftp://ftp.ncbi.nlm.nih.gov/pub/pmc/b0/ac/Breast_Cancer_Res_2001_Nov_9_3(1)_61-65.tar.gz"
ftpstream = urllib.request.urlopen(tarfile_name)
tfile = tarfile.open(fileobj=ftpstream, mode="r|gz")
Run Code Online (Sandbox Code Playgroud)

但是,当我运行代码的剩余部分(下面)时,我收到一条错误消息("不允许向后搜索").怎么会?

tfile_members = tfile.getmembers()

tfile_members1 = []
for i in range(len(tfile_members)):
tfile_members_name = tfile_members[i].name
tfile_members1.append(tfile_members_name)

tfile_members2 = []
for i in range(len(tfile_members1)): …
Run Code Online (Sandbox Code Playgroud)

python tar tarfile python-3.x

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

R - lp.assign()中的分配算法

有没有人知道R函数来解决组合优化中的赋值问题.

例如:假设我有N = 3名学生(1,2,3)和S = 4个可能的工作实习(A,B,C,D).每个N = 3名学生对所有S = 4个工作实习进行排名.1个位置显然不会得到学生(缺少表示为".").这是现实(因为N小于S)并且很好.有(我认为)4!可能的分配在这里:

A B C D
1 2 3 .
1 . 2 3   
1 3 . 2
1 . 3 2
1 3 2 .

And so on for the next 18 possible ways...
Run Code Online (Sandbox Code Playgroud)

因此,如果N和S很小,我可以考虑将所有可能的"现实"分配给学生.我可以从每个"现实"中总结出来.并选择具有最小总和等级的现实(在公平的系统中)是大多数学生得到他们想要的东西.

algorithm r

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

标签 统计

r ×4

python ×2

python-3.x ×2

tar ×2

tarfile ×2

algorithm ×1

excel ×1

nvd3.js ×1

rcharts ×1

regex ×1

subset ×1