我有5个变量的数据框。每当它们中的一个(树,变量3)发生变化时,我需要拉动整行并将其放置到一个新对象中。问题是我不知道任何逻辑运算符的值是从一行变到另一行。所以我完全期待一个错误,并得到了这个错误。这是我想出了这样做的代码:R中的矩阵表示法中的逻辑运算符
dat1<-read.csv("filepath", header=T) #Reads in file
dat<-NULL #Creates null object for for loop below
dat1<-as.matrix(dat1) #Code below only "works" on matrices
for (i in 2:198025) { if(dat1[i,3]-dat1[i-1,3]!=0){dat[i,]=dat1[i,]} } #Supposed to compare the row, i with the value of the row above.
我试图做一个减法,因为如果行之间的区别是什么,但0,则意味着该值必须有所改变。问题是R不喜欢矩阵符号内的逻辑表达式。除了一些冗长的线性组合来找到独特的价值之外,我想不出任何其他方式来做到这一点,我知道必须有更好的方法。
下面是一些样本数据
r1<- c(1,2,1,4,5)
r2<- c(1,3,1,5,6)
r3<- c(1,4,2,5,6)
r4<- c(1,4,2,6,7)
dat1<- rbind(r1,r2,r3,r4)
它不是实际的数据,但你可以用它来测试for循环。基本上,我需要的是知道第三个变量在r2和r3之间变化的情况,它应该将r3(dat1中的第三行)粘贴到一个新的对象中。
这不会粘贴出我需要的东西。它用NA代替值。我需要拉整行并保存。基本上,每次“树”变化时,我都需要知道整行的值。所以我需要知道r3中的内容,而且我真的只有部分数据。 – KathleenJ