我有矩阵
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的行的矩阵.这应该很简单,但我被卡住了.
谢谢, - 伊丽莎白
我正在同一个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'
有任何想法吗?
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)
我想比较Pos值df1,看看是否任何的落差PosStart和PosEnd的df2.对于超过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)
有人可以告诉我,如果没有循环,有没有办法做到这一点.我在这里做错了什么?经过几个月的挣扎,我不认为我仍然理解循环的概念.
提前感谢一堆.
我正在使用一个包含大约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)
任何帮助将不胜感激.谢谢!
我对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编写(并非总是如此,但几乎总是在模拟运行很多次时)显示此错误消息:
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,当出现错误消息时.如果未显示错误消息,则向量的所有位置都将填充值(无零).