chuxinyuan 参数a可能等于1,也可能等于0,如果参数a 等于1,则选择数据框df1,否则选择数据框df2 df = ifelse(a == 1, df1, df2) 这样貌似不行,得到的是一个list。一筹莫展,不知道如何破?
yihui chuxinyuan 可能是我有主观偏差,但通常我看到的 ifelse() 基本上都是误用;用这个函数的人可能都没理解这个函数真正是用来做什么的(用逻辑向量生成同样长度的向量)。这些误用基本上都应该用控制流 if ... else ... 来纠正。 dapengde 这种简单的判断语句我通常这样写: df = if (a == 1) df1 else df2 这是因为 R 里面 if 也是(特殊的)函数,也有返回值,把不同条件的返回值赋给 df 就可以了。
chuxinyuan tctcab 专门看了下《R语言实战》,你这个确实是教科书式的方式。可我仍旧认为如果代码是 df = ifelse(a == 1, df1, df2)感觉更符合函数式编程的风格,只要让备选项的数据类型和返回结果的数据类型一致就行。拿a=1的情况举例,如果df1是向量则返回的结果df也是向量,df1是数据框则返回的结果df也是数据框。