我不太熟悉R,所以这个问题可能已经得到了回答,但我可能只是不明白答案,所以任何链接到其他线程将是有益的。
我在寻找一种基本上可以实现R语言的C程序的方法
for(int i = 0; i < 12; i++){
for(int j = 0; j < 9; j++){
arr[i][j] = func(i+1,j+1);
}
}
我试过了
x <- mapply(func, 1:12, 1:9)
但它只把(1,1),(2,2),(3,3)......传递到func
中,我怎么才能把向量1:12和1:9的所有两两组合传递到func
中呢?
2条答案
按热度按时间sczxawaw1#
这是否有效:一个月一个月
否则,请使用
matrix(apply(expand.grid(1:12, 1:9), 1, func), 12, 9)
。背景:"dims [product xx] do not match the length of object [xx]" error in using R function
outer
vfwfrxfs2#
expand.grid
将所有组合创建为 Dataframe 行。t
转置结果,我将其视为data.frame
(t
返回一个令人烦恼的矩阵......即使应用于data.frame
......)和sapply
。由于sapply
将 Dataframe 视为列值列表,我得到了纵列(实际上是按行-在应用t
转置...之后)列出 Dataframe 内容。这些实际行向量取自函数和应用于这两个值的函数func
。因此,最后,我们把每一个可能的配对组合输入到函数(v)中...