我有两个清单:
list1<- list(x=c(1,2,3),
y=c(4,5,6))
list1
#$x
#[1] 1 2 3
#$y
#[1] 4 5 6
list2<- list(x=c(1,2,3),
y=c(4,5,6),
z=c(7,8,9))
list2
#$x
#[1] 1 2 3
#$y
#[1] 4 5 6
#$z
#[1] 7 8 9
Run Code Online (Sandbox Code Playgroud)
我正在尝试ifelse()根据列表的长度执行一个语句,如果第二个列表的长度高于第一个列表,则应返回第二个列表。但是,该ifelse()语句仅返回所需列表的第一个元素:
ifelse(length(list1)<length(list2),list2,list1)
# [[1]]
# [1] 1 2 3
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,如何让语句ifelse()返回整个列表?
ifelse对于向量,使用if/else进行标量比较。
if(length(list1)<length(list2)) list2 else list1
#$x
#[1] 1 2 3
#$y
#[1] 4 5 6
#$z
#[1] 7 8 9
Run Code Online (Sandbox Code Playgroud)
ifelse返回与我们正在执行的测试长度相同的输出。length(length(list1)<length(list2))是 1,因此它的输出长度也是 1。
| 归档时间: |
|
| 查看次数: |
1176 次 |
| 最近记录: |