【发布时间】:2015-12-19 12:48:54
【问题描述】:
我有一个包含 310 个数据帧的列表,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)
假设 x$ar.cat[1] == "Arousals Index: LOW" 条件仅在我的 310 个 mrns[[i]] data.frames 中的 180 个中满足,我希望 length(arlow) 的结果等于 180。
有人对如何删除那些不符合条件的data.frames有任何建议吗?
谢谢!
【问题讨论】:
-
如果你使用的是 R 3.2.0+,你可以试试
arlow[lengths(arlow) > 0]
标签: r conditional-statements subset