你如何在R中编写Pascal的三角形?

时间:2010-04-13 19:08:34

标签: r math combinatorics

我正在阅读,我自己(不是HW)关于编程,一个练习涉及在R中编写Pascal的三角形。我的第一个想法是制作一个列表,然后将内容添加到其中,但这也不起作用好。然后我想到了从一个向量开始,并在最后制作一个列表。然后我想到制作一个矩阵,并在最后制作一个列表。

不确定采用哪种方法。

任何提示?

感谢

2 个答案:

答案 0 :(得分:8)

Rosetta Code上有一个解决方案:

pascalTriangle <- function(h) {
  for(i in 0:(h-1)) {
    s <- ""
    for(k in 0:(h-i)) s <- paste(s, "  ", sep="")
    for(j in 0:i) {
      s <- paste(s, sprintf("%3d ", choose(i, j)), sep="")
    }
    print(s)
  }
}

如果我自己开发它,我会将它存储在列表中,因为这是处理可变长度行的最自然的数据结构。但在做出决定之前,您确实需要澄清一个用例。您是否打算在数据生成后对数据进行分析?

编辑:

这是Rosetta解决方案,用较少的循环重写,并将结果存储为列表:

pascalTriangle <- function(h) {
  lapply(0:h, function(i) choose(i, 0:i))
}

答案 1 :(得分:1)

使用Pascal三角形的属性:

select e.*, s.salary from
employees e
inner join
(
select emp_no,max(salary) as salary from salaries
group by emp_no
) s
on e.emp_no=s.emp_no

我想这段代码非常快。