应用处理额外的重复数据块
Sapply processing extra duplicate block of data
我在 R 中构建了一个模型,我正在尝试使用 sapply()
对其进行测试(我知道这可能看起来很奇怪——这是由于模型部署方式的特殊性)。然而,在处理该函数时,我偶然发现了 sapply()
的一个奇怪的、有问题的行为。这是代码:
sapply(1:nrow(test_x), function(i) {
print(i)
print(test_x[i,]$Age)
# actual functionality here...
}
)
起初,输出是正常的,然后最后它在一行上重新打印了整列:
[1] 1
[1] 71
[1] 2
[1] 71
[1] 3
[1] 55
...
[1] 5506
[1] 37
[1] 5507
[1] 65
[1] 71 71 55 62 61 68 69 62 62 52 43 52 57 42 41 48 53 60 38
[20] 56 58 63 68 46 60 43 60 52 54 56 41 41 40 55 70 61 64 42 ...
等等。有没有人遇到过这个?我对 R 很陌生,尤其是 apply()
函数。我确信有更好的方法来完成我正在做的事情,但现在我只是想弄清这个错误的根源。
sapply
returns 值;这就是功能的全部意义所在。您在循环内打印内容,最后 R 控制台将打印整个 sapply
的 return 值,这是函数的各个应用程序结果的列表(或向量) .如果要重复使用,请将输出存储在变量中。
如果您只需要打印而不对变量做任何事情,您可以只使用 for
循环而不是应用函数。
print
returns 它打印的值(至少对于原子向量)。由于第二次 print
调用是函数中的最后一个命令,因此 print
的 return 值用作函数的 return 值。因此,对于 i
的每次调用,sapply
都在收集 test_x[i,]$Age
,然后 return 发送给您。当您以交互方式执行它时(我假设),它会被打印出来。
对于后者,每次在控制台中按回车键时,如果结果未定向到变量,它会秘密发送到 print
:
> length(letters)
[1] 26
> print(length(letters))
[1] 26
重申一下,sapply
的输出被打印到屏幕上。这就是您第二次看到它的原因。
我在 R 中构建了一个模型,我正在尝试使用 sapply()
对其进行测试(我知道这可能看起来很奇怪——这是由于模型部署方式的特殊性)。然而,在处理该函数时,我偶然发现了 sapply()
的一个奇怪的、有问题的行为。这是代码:
sapply(1:nrow(test_x), function(i) {
print(i)
print(test_x[i,]$Age)
# actual functionality here...
}
)
起初,输出是正常的,然后最后它在一行上重新打印了整列:
[1] 1
[1] 71
[1] 2
[1] 71
[1] 3
[1] 55
...
[1] 5506
[1] 37
[1] 5507
[1] 65
[1] 71 71 55 62 61 68 69 62 62 52 43 52 57 42 41 48 53 60 38
[20] 56 58 63 68 46 60 43 60 52 54 56 41 41 40 55 70 61 64 42 ...
等等。有没有人遇到过这个?我对 R 很陌生,尤其是 apply()
函数。我确信有更好的方法来完成我正在做的事情,但现在我只是想弄清这个错误的根源。
sapply
returns 值;这就是功能的全部意义所在。您在循环内打印内容,最后 R 控制台将打印整个 sapply
的 return 值,这是函数的各个应用程序结果的列表(或向量) .如果要重复使用,请将输出存储在变量中。
如果您只需要打印而不对变量做任何事情,您可以只使用 for
循环而不是应用函数。
print
returns 它打印的值(至少对于原子向量)。由于第二次 print
调用是函数中的最后一个命令,因此 print
的 return 值用作函数的 return 值。因此,对于 i
的每次调用,sapply
都在收集 test_x[i,]$Age
,然后 return 发送给您。当您以交互方式执行它时(我假设),它会被打印出来。
对于后者,每次在控制台中按回车键时,如果结果未定向到变量,它会秘密发送到 print
:
> length(letters)
[1] 26
> print(length(letters))
[1] 26
重申一下,sapply
的输出被打印到屏幕上。这就是您第二次看到它的原因。