R.Last.value错误

R.Last.value错误,r,reference,R,Reference,我必须循环浏览一个列表,当我索引它时,.Last.value停止工作。 示例: 清单: x [[1]] cd_entrada qx laplace r 21 1 0.65 50 16.35 141 1 0.65 0 11.24 81 1 0.80 0 2.87 181 0 0.75 25 2.68 [[2]] cd_entrada qx pe

我必须循环浏览一个列表,当我索引它时,
.Last.value
停止工作。 示例:
清单:

x
[[1]]
    cd_entrada   qx laplace     r
21           1 0.65      50 16.35
141          1 0.65       0 11.24
81           1 0.80       0  2.87
181          0 0.75      25  2.68

[[2]]
   cd_entrada   qx penalty stepno     r
1           0 0.40      10   1500 12.64
2           1 0.45     400   2000 21.58
3           1 0.35     400    750 19.38
4           1 0.45     400   1000 12.78
5           1 0.55     400   1500  4.77
6           1 0.50     400    750  4.79
7           1 0.65     400    750  1.80
8           1 0.75     100    750  1.80
9           2 0.65     100   1500  1.95
10          0 0.40      10    750  9.18
11          0 0.35     200   1000  7.90
12          1 0.45     100   1500  5.65
13          0 0.60     100    750  2.80
第一元素的过滤线

(x[[1]])[.Last.value$cd_entrada==0 & .Last.value$laplace==25,]
    cd_entrada   qx laplace    r
181          0 0.75      25 2.68
没关系。但是当我用
I
替换
1
时,它会给出错误:

i=1
(x[[i]])[.Last.value$cd_entrada==0 & .Last.value$laplace==25,]
Error in .Last.value$cd_entrada : 
  $ operator is invalid for atomic vectors
但是
.Last.value
仍然返回相同的数据帧:

(x[[i]]); .Last.value
    cd_entrada   qx laplace     r
21           1 0.65      50 16.35
141          1 0.65       0 11.24
81           1 0.80       0  2.87
181          0 0.75      25  2.68
    cd_entrada   qx laplace     r
21           1 0.65      50 16.35
141          1 0.65       0 11.24
81           1 0.80       0  2.87
181          0 0.75      25  2.68
附言


.Last.value
将在您每次执行另一项作业(如
x=1
时更改。此时,
.Last.value
将只是一个长度为1的向量,其值为
1
。不能在函数或子集操作中使用
.Last.value
。仅当您希望检索可能未分配给名称的内容时才可靠。例如,您刚刚输入了一个复杂的ggplot2调用,不想从控制台中刮取结果,然后编辑掉额外的行继续符“+”-符号。您可以执行:

 my_last_plot <- .Last.value
不是你得到的结果,但如果我们先看x[[1]]:

 x[[1]]
#    cd_entrada   qx laplace     r
#21           1 0.65      50 16.35
#141          1 0.65       0 11.24
#81           1 0.80       0  2.87
#181          0 0.75      25  2.68

 (x[[1]])[.Last.value$cd_entrada==0 & .Last.value$laplace==25,]
#    cd_entrada   qx laplace    r
#181          0 0.75      25 2.68
如果要可靠地执行该操作,请使用以下代码:

i=1
x[[i]][ x[[i]]$cd_entrada==0 & x[[i]]$laplace==25, ]
#-----------
    cd_entrada   qx laplace    r
181          0 0.75      25 2.68

.Last.value
将在您每次执行另一项作业(如
x=1
时更改。此时,
.Last.value
将只是一个长度为1的向量,其值为
1
。不能在函数或子集操作中使用
.Last.value
。仅当您希望检索可能未分配给名称的内容时才可靠。例如,您刚刚输入了一个复杂的ggplot2调用,不想从控制台中刮取结果,然后编辑掉额外的行继续符“+”-符号。您可以执行:

 my_last_plot <- .Last.value
不是你得到的结果,但如果我们先看x[[1]]:

 x[[1]]
#    cd_entrada   qx laplace     r
#21           1 0.65      50 16.35
#141          1 0.65       0 11.24
#81           1 0.80       0  2.87
#181          0 0.75      25  2.68

 (x[[1]])[.Last.value$cd_entrada==0 & .Last.value$laplace==25,]
#    cd_entrada   qx laplace    r
#181          0 0.75      25 2.68
如果要可靠地执行该操作,请使用以下代码:

i=1
x[[i]][ x[[i]]$cd_entrada==0 & x[[i]]$laplace==25, ]
#-----------
    cd_entrada   qx laplace    r
181          0 0.75      25 2.68

i=1
.Last.value
更改为1和
1$something
将给您一个错误。你为什么还要使用
.Last.value
?似乎(不)可避免的风险我希望
。Last.value
将得到括号内的操作结果;但是它会得到上一行操作。
i=1
更改为最后一行。value
为1和
1$something
将给您一个错误。你为什么还要使用
.Last.value
?似乎(不)可避免的风险我希望
。Last.value
将得到括号内的操作结果;但是它得到了上一行operation.tks,@42-我希望是这样的。Last.value将得到括号内操作的结果;但是它得到了上一行operation.tks,@42-我希望是这样的。Last.value将得到括号内操作的结果;但它得到了前一行的操作。