R 为什么“近似”返回的是列表而不是数据帧或数组?

R 为什么“近似”返回的是列表而不是数据帧或数组?,r,R,对我来说,approx将返回一个列表是没有意义的,因为如果我理解正确的话,它返回的列表的两个元素保证是数值的,并且长度相等。因此,返回数组或数据帧似乎更有意义 我正在使用approx编写一些函数,这使我无法完全理解它是如何工作的。是否存在需要列表的情况,或者更好的情况?函数将成对列表作为参数。通常,列表用于将参数传递给latticegraphics,在ggplot及其后代出现之前,它是主要的高级图形环境。列表还用于将参数传递给许多函数中的控制参数。在这种情况下,您希望x和y长度相同,因此它可以是

对我来说,
approx
将返回一个列表是没有意义的,因为如果我理解正确的话,它返回的列表的两个元素保证是数值的,并且长度相等。因此,返回数组或数据帧似乎更有意义


我正在使用
approx
编写一些函数,这使我无法完全理解它是如何工作的。是否存在需要列表的情况,或者更好的情况?

函数将成对列表作为参数。通常,列表用于将参数传递给
lattice
graphics,在
ggplot
及其后代出现之前,它是主要的高级图形环境。列表还用于将参数传递给许多函数中的控制参数。在这种情况下,您希望
x
y
长度相同,因此它可以是一个数据帧,但没有特别的理由需要这样的结构,并且基本函数
将接受命名列表,并将它们正确地分配到参数列表中

(我认为矩阵不能正确地分配到基本绘图例程的x和y参数,即使有匹配的行或列名。矩阵实际上是折叠向量。)


所以我认为答案是通过列表最符合R中函数式编程的实现方式。

我理解这种情绪,但我不明白为什么这两个选项之间有任何实际的区别。在大多数情况下,这两个选项之间没有重大的实际区别——只是在某些情况下,数据帧更容易插入到绘图中。对我来说,更大的问题是它看起来很奇怪,这让我觉得我不理解
approw
正确,这可能会在以后给我带来问题。
my_approw@BenBolker-或者希望它们不会咬人,视情况而定。是的,但是。。。多亏了
?xy.coords
…数据框是列表,但有额外的开销。大多数基本绘图函数都能正确处理包含元素
x
y
的两列矩阵、数据框和列表。我看不出有任何理由认为作为一个名单通过是低劣的。如果您查看
xy.coords
代码,您会发现数据帧将由与列表相同的代码部分来处理。是的,但是如果能够要求(比如)大约(x,y)[2:5,]
(即按行索引),列表比数据帧更烦人。