在 for 循环中有条件地更新值

彼得

我想知道为什么我不能用 for 循环复制第一个示例。更具体地说,您可以看到,如果我们尝试使用 for 循环执行逻辑,则第二行和第三行不会填充新值。为什么是这样?

复制示例:

df <- data.table(name=c('a', 'b', 'c'))

df[name=='a', x:=1]
df[name=='b', x:=2]
df[name=='c', x:=3]

df

####

df <- data.table(name=c('a', 'b', 'c'))

values <- unique(df$name)

for (x in 1:3) {
  df[name==values[x], x:=x]
}

df

我的输出:

> df <- data.table(name=c('a', 'b', 'c'))
> df[name=='a', x:=1]
> df[name=='b', x:=2]
> df[name=='c', x:=3]
> df
   name x
1:    a 1
2:    b 2
3:    c 3
> df <- data.table(name=c('a', 'b', 'c'))
> values <- unique(df$name)
> for (x in 1:3) {
+   df[name==values[x], x:=x]
+ }
> df
> df
   name  x
1:    a  1
2:    b NA
3:    c NA
瓦尔迪

这是一个范围问题,循环中的第一步定义了x,后续步骤使用此定义(对于第 2 行和第 3 行,它等于NA)。

如果你使用i而不是x,它的工作原理:

for (i in 1:3) {
  df[name==values[i], x:=i]
}

df
Index: <name>
     name     x
   <char> <int>
1:      a     1
2:      b     2
3:      c     3

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在For循环中有条件地更新多个类别的值

如何在v-for循环中有条件地更改表行样式?

避免在Python循环中有条件地增加计数器

在Bash中有条件地为for循环中的数组分配位置参数?

在循环中有条件地应用 CSS - VueJS

在Django中有条件地批量更新具有动态值的查询的最佳方法

在Nginx配置中有条件地映射值

在 groupby 熊猫中有条件地设置值

在DataFrame的同一行中有条件地从其他值有条件地更新新值的方法背后的熊猫式推理

for循环中没有条件?

有条件地更新React Json值

如何使用 Angular 7 中的模块有条件地绑定 ngFor 循环中的类或属性值?

有条件地进入for循环

如何在useEffect中更新状态的条件组件中有条件地渲染?

是否可以在 System Verilog 中有条件地生成 for 循环?

有条件地替换值

有条件地求和值

在MongoDB中有条件地应用和条件

在 Pandas 中有条件地用其他值替换列值

Python:有条件地在循环中绘制数据框中许多列的数据

Python:在for循环中写入CSV,有条件地在特定列中添加值

有条件地在for循环中交换轴以获取多维列表Python

如何在无状态组件中有条件地更新状态?

在PostgreSQL-11中有条件地更新字段时出错

在父类传递的事件处理程序中有条件地更新子组件的状态

如何在Eloquent模型中有条件地覆盖值?

在 R 中有条件地用 NA 替换值

如何在熊猫中有条件地填充列中的空值

如何在角度2中有条件地分配属性值?