我在使用R时遇到了一个问题,我可以在列表中的元素上运行ifelse语句,但是一旦将ifelse语句放在lapply函数内部时,它就不再起作用。
以下是我的示例。我正在使用包含三个数据框的列表:
> dflist
[[1]]
ID1 tID1
1 m1 1
2 m2 2
3 m3 3
4 m4 4
5 m5 5
[[2]]
ID2 tID2
1 m7 7
2 m8 8
3 m9 9
4 m10 10
5 m11 11
[[3]]
ID3 tID3
1 m13 13
2 m14 14
3 m15 15
4 m16 16
5 m17 17
6 m18 18
如果数据框中行数为奇数,则希望R将其标记为“ODD”。如果数据框中行数为偶数,则只需输出相同的数据框。我希望输出结果是一个列表。
在编写独立的ifelse语句时,可以实现此目标:
> ifelse(nrow(dflist[[1]])%%2==!0, "ODD", dflist[1])
[1] "ODD"
> ifelse(nrow(dflist[[3]])%%2==!0, "ODD", dflist[3])
[[1]]
ID3 tID3
1 m13 13
2 m14 14
3 m15 15
4 m16 16
5 m17 17
6 m18 18
但是,一旦我把它放到一个lapply语句中,就会收到错误信息。
> lapply(dflist, function(x) ifelse(nrow(dflist[[x]])%%2==!0, "ODD", dflist[x]))
Error in dflist[[x]] : invalid subscript type 'list'
>
有什么想法可以解决这个问题吗?谢谢。
lapply(seq_along(dflist), ...)
。 - Shapeif/else
。 当长度大于1时,使用ifelse
。 - akrun