我希望有人可以帮助解决我在创建数据子集时遇到的以下问题:
我有一个名为' LakeK_all'的数据集。其中一个专栏名为“Lake'并包含一个湖名称列表(S001-Out,S002-Out,Y001-Out,Y002-Out,...)。我想提取以' S开头的数据子集。我发现如果我的数据按字母顺序排序,以便所有网站都以' S'是第一个,从Y开始的是最后一个。如果湖泊混淆不起作用。我可以先对数据进行排序,但如果可能的话,我想直接解决问题并保持步骤简单。
这是我的代码:
seki_vector = LakeK_all[grep("^[S].*", LakeK_all$Lake, value=TRUE)]
seki_vector
LakeK = subset(LakeK_all, subset=(LakeK_all$Lake==seki_vector))
LakeK
以下是我得到的输出:
> seki_vector = LakeK_all[grep("^S", LakeK_all$Lake, value=TRUE)]
Error in `[.data.frame`(LakeK_all, grep("^S", LakeK_all$Lake, value = TRUE)) :
undefined columns selected
> seki_vector
[1] "S005-Out" "S003-Out" "S004-Out" "S001-Out" "S040-Out" "S043-Out" "S044-Out" "S048-Out" "S049-Out" "S041-Out" "S047-Out" "S042-Out" "S046-Out" "S039-Out"
LakeK = subset(LakeK_all, subset=(LakeK_all$Lake==seki_vector))
Warning messages:
1: In is.na(e1) | is.na(e2) :
longer object length is not a multiple of shorter object length
2: In `==.default`(LakeK_all$Lake, seki_vector) :
longer object length is not a multiple of shorter object length
> LakeK
[1] Y Year WYear Lake Panel Lat Long Cen LowerDL UpperDL InclProb PanelProb AdjInclProb
<0 rows> (or 0-length row.names)
似乎向量正在工作,但不是子集步骤。再次,如果我对数据进行排序,那么它的工作正常。
通过以前的问题阅读,听起来最好使用[]代替&#39;子集&#39;。我尝试过这个并没有解决问题。
答案 0 :(得分:0)
我想我发现了一些问题。在grep中,您不希望将值设置为TRUE。将值设置为true将返回匹配的单词而不是行的索引。你也错过了一个逗号(因此未完成的列错误)。
试试这个: LakeK_all [grep(&#34; ^ S&#34;,LakeK_all $ Lake),]