我有一个310 data.frames的列表, mrns[[i]]
,我根据因子的值 mrns[[i]]$ar.cat
进行子集化 . 我能够以一种方式使用它们的子集,使那些与条件不匹配的data.frames留下0观察,但我希望代码只删除这些data.frames而不是留在新的列表为空 .
我的代码是:
arlow <- lapply(mrns, function(x) subset(x, x$ar.cat[1] == "Arousals Index: LOW"))
这给了我:
length(arlow)
[1] 310
当我看到 arlow
列表的内容时,我看到了不符合条件的data.frames:
[[98]]
[1] raw.Number raw.Reading_Status raw.Month raw.Day raw.Year
[6] raw.Hour raw.Minute raw.Systolic raw.Diastolic raw.MAP
[11] raw.PP raw.HR raw.Event_Code raw.Edit_Status raw.Diary_Activity
[16] na.strings raw.facility raw.lastname raw.firstname raw.id
[21] raw.hookup raw.datetime raw.mrn unis ar.value
[26] ar.cat ID avg.hr.prhr avg.sys.prhr avg.dias.prhr
[31] avg.map.prhr avg.pp.prhr time time_60 raw.Minutee
<0 rows> (or 0-length row.names)
假设只有我的310 mrns[[i]]
data.frames中的180个符合 x$ar.cat[1] == "Arousals Index: LOW"
条件,我希望 length(arlow)
的结果等于180 .
任何人都有关于如何删除这些数据的建议 . 框架与条件不匹配?
谢谢!
4 回答
那个怎么样
首先,您过滤掉您所做的操作,然后仅使用数据框架 .
所以你想从
arlow
中删除NULL
?尝试:
如:
这是another way:
编辑:实际上,我的回答没有多大意义 . 我没有在你想要的每个数据框中进行子集化 . 不过,我仍然认为which()对没有NA和NULL值的子集很有用 .
此解决方案测试类别(ar.cat)是否对数据框列表中的每个数据框都有“唤醒索引:低”的答案 . 生成的向量应该有320个元素,其中满足条件的元素为真 . 现在我们使用which()来获取真值的索引 . 这些索引应该忽略我们生成的向量中出现的任何NULL或NA值 . 作为最后一步,我们使用我们想要的索引对数据帧列表进行子集化 .
感谢大家的回应!我发现添加了以下代码并给了我正在寻找的东西 .