Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 附加到循环中的数组_Arrays_R_For Loop - Fatal编程技术网

Arrays 附加到循环中的数组

Arrays 附加到循环中的数组,arrays,r,for-loop,Arrays,R,For Loop,我是一名SAS程序员,正在学习R 我有一个从csv文件读取的矩阵 如果行的“id”列的值大于等于1100000000,我希望读取“transit”列中的值 我这样做了(循环1): 但是,它不起作用,因为在运行循环之后,x仍然是空的 >x 逻辑(0) 但是,我能够通过(循环2)完成我的任务: 或者,使用(循环3): x=vector() (i在1中:长度(应收账款[,“运输”])){ if(应收账款[i,“id”]>=1100000000){ 好的,有几件事 append在您的第一次尝试中不起作用

我是一名SAS程序员,正在学习R

我有一个从csv文件读取的矩阵

如果行的“id”列的值大于等于1100000000,我希望读取“transit”列中的值

我这样做了(循环1):

但是,它不起作用,因为在运行循环之后,x仍然是空的

>x
逻辑(0)

但是,我能够通过(循环2)完成我的任务:

或者,使用(循环3):

x=vector()
(i在1中:长度(应收账款[,“运输”])){
if(应收账款[i,“id”]>=1100000000){
好的,有几件事

append
在您的第一次尝试中不起作用,因为您没有将结果分配给任何对象。一般来说,R“就地”不起作用。它更像是一种函数式语言,这意味着必须始终将更改分配给某个对象。(也有例外,但过早改变此规则会给您带来麻烦。)

更重要的一点是,R中的“成长”对象是一个很大的禁忌。你会很快开始怀疑为什么有人可以使用R,因为像这样成长的对象会很快变得非常非常缓慢

相反,学习使用矢量化操作,如:

receivables[receivables[,"id"] >= 1100000000,"transit"]
好的,有几件事

append
在您的第一次尝试中不起作用,因为您没有将结果分配给任何对象。一般来说,R“就地”不起作用。它更像是一种函数式语言,这意味着必须始终将更改分配给某个对象。(也有例外,但过早改变此规则会给您带来麻烦。)

更重要的一点是,R中的“成长”对象是一个很大的禁忌。你会很快开始怀疑为什么有人可以使用R,因为像这样成长的对象会很快变得非常非常缓慢

相反,学习使用矢量化操作,如:

receivables[receivables[,"id"] >= 1100000000,"transit"]

为什么不仅仅是
应收账款[应收账款[,“id”]>=1100000000,“运输”]
?谢谢Joran,我也想寻求一种更好的方法。但是,我仍然想知道循环中的操作功能与cmd line.Thx上的操作功能之间的差异的原因。为什么不仅仅是
应收账款[应收账款[,“id”]>=1100000000,“运输”]
?谢谢Joran,我也想寻求一种更好的方法。但是,我仍然想知道循环中的操作函数与cmd line.Thx.+1上的操作函数之间差异的原因。我还想补充一点,最好使用family来执行循环,以避免副作用。+1!我还想补充一点,最好使用family来执行循环,以避免si无效。。
x = vector()
for (i in 1:length(receivables[,"transit"])){
  if(receivables[i,"id"] >= 1100000000){
     x <- append(x, receivables[i,"transit"]);
  }
}
receivables[receivables[,"id"] >= 1100000000,"transit"]