R 和 Python 中的双 for 循环

joe*_*oel 5 python for-loop r

我正在尝试在 R 中转换 Python 中的双 for 循环。当我在粘贴函数中使用它时,它可以正常工作。我试图弄清楚为什么没有它就无法访问这些内容。

在Python中

l1 = ['appetizer','main course']
l2 = ['italian','mexican','french']

for i in l1:
    for j in l2:
        print(i,j)
Run Code Online (Sandbox Code Playgroud)

在R中

l1 = list('appetizer','main course')
l2 = list('italian','mexican','french')
Run Code Online (Sandbox Code Playgroud)

这会引发错误

for (i in l1) {
  for (j in l2) {
    print(i,j)
  }
}
Run Code Online (Sandbox Code Playgroud)

错误

Error in print.default(i, j) : invalid 'digits' argument
In addition: Warning message:
In print.default(i, j) : NAs introduced by coercion
> for (i in l1) {
Run Code Online (Sandbox Code Playgroud)

这不会引发错误

for (i in l1) {
  for (j in l2) {
    print(paste(i,j,sep=","))
  }
}
Run Code Online (Sandbox Code Playgroud)

输出

[1] "appetizer,italian"
[1] "appetizer,mexican"
[1] "appetizer,french"
[1] "main course,italian"
[1] "main course,mexican"
[1] "main course,french"
Run Code Online (Sandbox Code Playgroud)

Vin*_*oso 1

请参阅下面的解释print方法的解释。

\n
print(x, digits = NULL, quote = TRUE,\n  na.print = NULL, print.gap = NULL, right = FALSE,\n  max = NULL, useSource = TRUE, \xe2\x80\xa6)\n\nx       the object to be printed.\n\ndigits  a non-null value for digits specifies the minimum number of \n        significant digits to be printed in values. The default, NULL, uses \n        getOption("digits"). (For the interpretation for complex numbers see \n        signif.) Non-integer values will be rounded down, and only values \n        greater than or equal to 1 and no greater than 22 are accepted.\n...\n
Run Code Online (Sandbox Code Playgroud)\n

显然第二个变量不被接受为有效参数。

\n

虽然这有点奇怪,但更重要的一点是 print(a,b) 并不是打印多个值的语法正确的方法。

\n

所以你可以继续使用paste()函数

\n

或类似的索引print(c(l1[[i]], l2[[j]]))

\n