小编Mar*_*rek的帖子

将R连接到Java

rjava至R连接到Java的唯一途径?我问,因为网页末尾有免责声明:

此接口使用Java反射API来查找正确的方法,因此它更慢并且可能不正确(适用于简单示例,但可能不适用于更复杂的示例).目前,在程序中不鼓励使用它,因为它可能在将来发生变化.

这有点令人担忧.你是如何解决这个问题的?我知道Rweka有一个独立的界面,所以我可能会考虑那个包,但也许很多R用户已经经历过这些痛苦.

java r

7
推荐指数
2
解决办法
857
查看次数

如何从函数返回具有给定名称的data.frame?

假设我有一个函数从MySQL表读取数据,操作它并返回一些data.frame.注意,该函数只是一个例子,其功能无关紧要......,例如:

addRowSd <- function(table,con,pattern="^Variable") {

dframe <- dbReadTable(con,table)
cn <- colnames(dframe)
qs <- subset(x, x  %in% grep(pattern, x, value=TRUE))
dframe$qsd <- sd(t(dframe[,c(qs)])) 

return(dframe)
}

mydf$sd <- addRowSd(...)
Run Code Online (Sandbox Code Playgroud)

我最终得到一个名为mydf的data.frame.现在我想对SQL表名的字符向量这样做,并相应地命名返回的数据帧.如果我只是用

x=lapply(MySQLtablenames,addRowSd,con)
Run Code Online (Sandbox Code Playgroud)

我会得到一些名为x的列表.当然,我可以按照我喜欢的方式取消所有内容并重命名,但我的问题是:

如何使lapply(或其他类似函数)返回多个单数据帧或至少包含从我的字符向量"MySQLtablenames"派生的某些名称的列表?

r lapply

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

有没有办法在R中读写内存文件?

我正在尝试使用R来分析大型DNA序列文件(fastq文件,每个文件几千兆字节),但这些文件的标准R接口(ShortRead)必须立即读取整个文件.这不适合内存,因此会导致错误.有什么方法可以一次读取几(千)行,将它们填入内存文件,然后使用ShortRead从内存文件中读取?

我正在寻找像Perl的IO :: Scalar这样的东西.

file-io memory-management r in-memory large-files

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

在ggplot中对分类变量进行排序

美好的一天,我希望使用ggplot2生成图形,但不使用其默认的分类变量排序(按字母顺序排列,在脚本中:字母),但使用连续变量的相关值(在脚本中:数字).

这是一个示例脚本:

library(ggplot2)
trial<-data.frame(letters=letters, numbers=runif(n=26,min=1,max=26))
trial<-trial[sample(1:26,26),]
trial.plot<-qplot(x=numbers, y=letters, data=trial)
trial.plot
trial<-trial[order(trial$numbers),]
trial.plot<-qplot(x=numbers, y=letters, data=trial)
trial.plot
trial.plot+stat_sort(variable=numbers)
Run Code Online (Sandbox Code Playgroud)

最后一行不起作用.

r ggplot2

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

在r,ggplot2,lattice或latticeExtra中创建更连续的调色板

警告......非常新手问题如下:

我试图绘制几个(X,Y)点的相当规则的分布,每个点与一个值相关联,让我们调用Z,它在-20到+20之间变化非常不规则.我对平滑感兴趣; 我想要点Z值根据平滑变化的调色板绘制,就像Gnuplot可以使用适当的平滑调色板一样.我已经尝试过基础R,ggplot2和latticeExtra,尽我所能,我可以提出以下几乎可以做到的事情:

library(lattice)
library(latticeExtra)
library(colorRamps)
df = read.table(file"whatever", header=T)
levelplot(Z~X*Y, df, panel=panel.levelplot.points, cex=0.2,
   col.regions=colorRampPalette(c("red","white","blue"))(50))
Run Code Online (Sandbox Code Playgroud)

一个数据点如下:1302525 225167 -3.5

当我用最后一个代码行中的"50"绘制我的数据帧为3时,我得到红色,白色和蓝色的可预测的R再循环行为,重复五次,第16个颜色条段为白色.将3更改为7会导致更多的红色和蓝色阴影创建2个重复颜色范围段,并在颜色范围尝试回收时留下两个微红色.这表明使这个数字更大可以使颜色更精细.但如果我输入一个大于16的数字,那就是我得到的16个彩色片段,从红色到白色均匀变换为蓝色.但是我希望色标更精细,并且在完美的世界中,将Z的零强制为白色.

到目前为止我对R的经验是,当我不能做到这么简单的事情时,我错过了一个非常基本的概念.它是什么?

plot r colors ggplot2 lattice

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

如何在R中的粘贴命令中的每个元素之间插入逗号?

如何在R中的粘贴命令中的每个元素之间插入逗号?

paste ("X",1:5,sep="")

"X1" "X2" "X3" "X4" "X5"
Run Code Online (Sandbox Code Playgroud)

现在我想在每个元素之间插入一个逗号

Desired Output 

"X1","X2","X3","X4","X5"
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

r

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

将lm应用于由帧的第三列定义的数据帧的子集

我有一个包含x值向量,y值向量和ID向量的数据框:

x <- rep(0:3, 3)
y <- runif(12)
ID <- c(rep("a", 4), rep("b", 4), rep("c", 4))
df <- data.frame(ID=ID, x=x, y=y)
Run Code Online (Sandbox Code Playgroud)

我想为x的子集创建一个单独的lm,并且y共享相同的ID.以下代码完成了工作:

a.lm <- lm(x~y, data=subset(df, ID=="a"))
b.lm <- lm(x~y, data=subset(df, ID=="b"))
c.lm <- lm(x~y, data=subset(df, ID=="c"))
Run Code Online (Sandbox Code Playgroud)

除非这是非常脆弱的(未来的数据集可能有不同的ID)和未矢量化.我还想将所有lms存储在单个数据结构中.必须有一种优雅的方式来做到这一点,但我找不到它.有帮助吗?

r vectorization dataframe

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

R:ggplot2:使用密度叠加向直方图添加计数标签

我有一个时间序列,我正在检查数据异质性,并希望向一些数据分析师解释其中的一些重要方面。我有一个由 KDE 图覆盖的密度直方图(为了清楚地看到两个图)。然而,原始数据是计数,我想将计数值作为直方图条上方的标签放置。

这是一些代码:

$tix_hist <- ggplot(tix, aes(x=Tix_Cnt)) 
             + geom_histogram(aes(y = ..density..), colour="black", fill="orange", binwidth=50) 
             + xlab("Bin") + ylab("Density") + geom_density(aes(y = ..density..),fill=NA, colour="blue") 
             + scale_x_continuous(breaks=seq(1,1700,by=100))

    tix_hist + opts(
       title = "Ticket Density To-Date",
       plot.title = theme_text(face="bold", size=18), 
       axis.title.x = theme_text(face="bold", size=16),
       axis.title.y = theme_text(face="bold", size=14, angle=90),
       axis.text.x = theme_text(face="bold", size=14),
       axis.text.y = theme_text(face="bold", size=14)
           )
Run Code Online (Sandbox Code Playgroud)

我考虑过使用 KDE 带宽等外推计数值。是否可以对 ggplot 频率直方图的数字输出进行数据框化并将其添加为“层”。我还不精通 layer() 函数,但任何想法都会有所帮助。非常感谢!

label r histogram ggplot2

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

如何防止覆盖文件?

我正在寻找一种方法来阻止R在会话期间覆盖文件.更通用的解决方案则更好.

目前,我得到了一堆的函数调用如:safe.save,safe.png,safe.write.table这是实现或多或少地

safe.smth <- function(..., file) {
    if (file.exists(file))
        stop("File exists!")
    else
        smth(..., file=file)
}
Run Code Online (Sandbox Code Playgroud)

它有效,但只有我控制执行.如果某些(不是我的)函数创建了文件,我就无法阻止它被覆盖.

另一种方法是在文件上设置只读标志,这也是覆盖现有文件的前R.但这也有缺点(例如:您不知道哪些文件需要保护).
或者写一行:

protect <- function(p) if (file.exists(p)) stop("File exsits!") else p
Run Code Online (Sandbox Code Playgroud)

并在提供文件名时始终使用它.

有没有办法强制这种行为会话?连接的某种全局设置?也许只是功能的子集(图形​​设备,file创建的连接等)?也许某些系统特定的解决方

以下内容可用作测试用例:

test <- function(i) {
    try(write.table(i, "test_001.csv"))
    try(writeLines(as.character(i), "test_002.txt"))
    try({png("test_003.png");plot(i);dev.off()})
    try({pdf("test_004.pdf");plot(i);dev.off()})
    try(save(i, file="test_005.RData"))
    try({f<-file("test_006.txt", "w");cat(as.character(i), file=f);close(f)})
}
test(1)
magic_incantations() # or magic_incantations(test(2)), etc.
test(2) # should fail on all writes (to test set read-only to files from first call)
Run Code Online (Sandbox Code Playgroud)

file-io r

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

如何为子字符串的开头指定动态位置?

如示例中所示,我正在尝试substring使用data.frame(video_data_2)中的Video_full列.我希望在这段时间之后保留所有角色.期间始终存在,只有一个期间,并且该列的每个值处于不同的位置.

     Date                     Video_full      Instances   
1 Apr 1, 2010  installs/AA.intro_video_1      546         
2 Apr 1, 2010  installs/ABAC.intro_video_2    548      
Run Code Online (Sandbox Code Playgroud)

我有子串工作:

video_data_2$Video_full <- substring(video_data_2$Video_full,11)
Run Code Online (Sandbox Code Playgroud)

而且strsplit:

strsplit("installs/AA.intro_video_1 ",'[.]')
Run Code Online (Sandbox Code Playgroud)

我只是无法弄清楚如何substring在动态位置启动或仅保留返回的第二个值strsplit.

感谢您为简单问题提供的任何帮助.

r

5
推荐指数
3
解决办法
2778
查看次数