小编Jus*_*tin的帖子

过滤掉R中仅包含0的矩阵中的行

我有矩阵

m <- matrix(c(1, 0, 3, 4, 0, 6), 3)
Run Code Online (Sandbox Code Playgroud)

我需要过滤出两个列的值都为0的行,这些行实际上返回了矩阵:

m <- matrix(c(1, 3, 4, 6), 3)
Run Code Online (Sandbox Code Playgroud)

我试过了

m[m[, 1] > 0 & m[, 2] > 0]
Run Code Online (Sandbox Code Playgroud)

但是这会返回一个向量而不是一个只有0的行的矩阵.这应该很简单,但我被卡住了.

谢谢, - 伊丽莎白

r matrix

3
推荐指数
2
解决办法
4999
查看次数

将geom_path和geom_text添加到同一个ggplot会在r中生成错误

我正在同一个ggplot中绘制geom_path对象和geom_text对象,但遇到了以下问题:

#load the data frames
df1 <- data.frame(x=c(32, 42, 52), y=c(15, 20, 25), grp=c(1, 2, 2), site=c("A", "B", "C"))
df1$grp = factor(df1$grp)
colnames(df1)[3] = "Group"

df2 <- data.frame(x=c(32, 42, 52), y=c(15, 20, 25))

#create basic plot with site name coloured by group 
p = ggplot(df1, aes(x=x, y=y, label=site))
p = p + geom_text(aes(colour=factor(Group)), size=4)
p = p + coord_fixed()

#I try adding a path
p = p + geom_path(data=df2, aes(x=x, y=y)) 
Run Code Online (Sandbox Code Playgroud)

但是在eval(expr,envir,enclos)中得到错误Error:找不到对象'site'

有任何想法吗?

r ggplot2

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

在R中循环的替代方案

df1 <- data.frame(Chr=1, Pos= c(100,200,300,400),stringsAsFactors=F)

df2 <- data.frame(Chr=1, PosStart= c(25,25,150,175,225,275,375),PosEnd= c(150,75,275,300,400,500,750),stringsAsFactors=F)
Run Code Online (Sandbox Code Playgroud)

我想比较Posdf1,看看是否任何的落差PosStartPosEnddf2.对于超过1行的情况,这可能是真的df2.在输出中,我试图将其df1$Pos作为新列附加df2$CoPos; 每次条件成立.输出应该是这样的:

Chr PosStart PosEnd CoPos
1       25    150   100
1      150    275   200
1      175    300   200
1      225    400   300
1      275    500   300
1      375    750   400
Run Code Online (Sandbox Code Playgroud)

我做过类似的事情:

for(i in 1:length(df1$Pos)){

    for(j in 1:length(df2$PosStart){

            df2$CoPos[j]<- df1$Pos[which(df2$PosStart[j] < df1$Pos[i] < df2$PosEnd[j])]
    }

}
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我,如果没有循环,有没有办法做到这一点.我在这里做错了什么?经过几个月的挣扎,我不认为我仍然理解循环的概念.

提前感谢一堆.

r

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

在R中向量化一个for循环

我正在使用一个包含大约300万个观测值的非常大的数据集,而且如果它们符合特定要求,我想要完成并基本上将某些观测结合起来.我在下面写了一个for循环来做这个,但效率非常低.是否有一种更有效的方式,例如使用apply函数或其他东西,可以改善这一点?

nobs <- nrow(acsdata)

for (i in 2:nobs){

  if (acsdata[i,6]==1 & acsdata[(i-1),6]==1) acsdata[(i-1),3]=2  

  if (acsdata[i,6]==1 & acsdata[(i-1),6]==1) acsdata[(i-1),21:30]=acsdata[(i-1),21:30]+acsdata[i,21:30]

  if (acsdata[i,6]==1 & acsdata[(i-1),6]==1) acsdata[(i),31]=1

}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.谢谢!

loops for-loop r vectorization

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

列出R中给定产品ID的所有产品

我对R很新,所以如果这个问题相对较新,我会道歉.我有一个大约33,000行的列表,显示订单ID和订单ID中订购的产品.结构如下:

Order.ID    Product  
193505  Pineapple Cheddar Burger  
193505  Onion Rings  
193564  Pineapple Cheddar Burger  
193623  Hamburger  
193623  French Fries  
193623  Fountain Soda  
193623  Hot Dog  
193631  Hamburger  
193631  French Fries  
193631  Milkshake  
193644  Daily Special  
193726  Hamburger  
193726  French Fries  
193726  Fountain Soda  
193728  Hamburger  
193728  French Fries  
193728  Fountain Soda  
193738  Hamburger  
193738  French Fries  
193762  Hamburger  
193762  French Fries  
193762  Fountain Soda  
193762  Hamburger  
193762  French Fries  
193762  Fountain Soda
Run Code Online (Sandbox Code Playgroud)

我想生成一个相关矩阵,它反映了与每个其他项目在同一订单ID中订购的每个项目的相关性.我开始使用a table(ID, Product)给了我每个订单中订购的产品.现在我被困在如何计算每个其他产品(产品2-k)的订单数量,因为已经订购了产品1.理想情况下,我想对每个产品进行分析并将其转换为矩阵,但正确评估一个似乎是合乎逻辑的第一步.

我将不胜感激任何有关此问题的指导.提前致谢.

r matrix correlation

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

无法理解R中if条件中的错误消息

我的程序有时用R编写(并非总是如此,但几乎总是在模拟运行很多次时)显示此错误消息:

Error in if (sum.wt1y1 == 0 | sum.wt2y2 == 0) zn[k] <- 0 else zn[k] <- (sum.wt1y1 *  : 
  missing value where TRUE/FALSE needed
Run Code Online (Sandbox Code Playgroud)

谁能解释一下这个错误信息的含义是什么?我无法找到错误的位置.最终输出是一个向量.现在在该向量中,一些值显示"值",但其余为0,0,0,...,0,当出现错误消息时.如果未显示错误消息,则向量的所有位置都将填充值(无零).

if-statement r

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