Learning data.table-如何通过行号和列名更新值

卡诺维奇

我的最后几篇文章写得不好,所以这次我将尝试做得更好和更清洁。

我正在学习如何使用数据表对象,而我正在努力的一项任务是同时通过行号和列名来更新数据表中的值。使用data.frames可以轻松得多,我只需执行以下操作:

my_df = as.data.frame(matrix(ncol = 10, nrow = (100)))
names(my_df) = c("P1", "P2", "P3", "P4", "P5", "Q1", "Q2", "Q3", "Q4", "Q5")
head(my_df)

  P1 P2 P3 P4 P5 Q1 Q2 Q3 Q4 Q5
1 NA NA NA NA NA NA NA NA NA NA
2 NA NA NA NA NA NA NA NA NA NA
3 NA NA NA NA NA NA NA NA NA NA
4 NA NA NA NA NA NA NA NA NA NA
5 NA NA NA NA NA NA NA NA NA NA
6 NA NA NA NA NA NA NA NA NA NA

replacement = c(1, 2, 3, 4, 5)
my_df[2, names(my_df)[1:5]] = replacement
head(my_df)

  P1 P2 P3 P4 P5 Q1 Q2 Q3 Q4 Q5
1 NA NA NA NA NA NA NA NA NA NA
2  1  2  3  4  5 NA NA NA NA NA
3 NA NA NA NA NA NA NA NA NA NA
4 NA NA NA NA NA NA NA NA NA NA
5 NA NA NA NA NA NA NA NA NA NA
6 NA NA NA NA NA NA NA NA NA NA

因此,使用数据框非常容易。但是,我正在为数据表完成同样的任务。对于示例数据表,使用与上述数据框相同的结构,我尝试了以下操作:

my_dt = data.table(matrix(ncol = 10, nrow = (100)))
names(my_dt) = c("P1", "P2", "P3", "P4", "P5", "Q1", "Q2", "Q3", "Q4", "Q5")
head(my_dt)

   P1 P2 P3 P4 P5 Q1 Q2 Q3 Q4 Q5
1: NA NA NA NA NA NA NA NA NA NA
2: NA NA NA NA NA NA NA NA NA NA
3: NA NA NA NA NA NA NA NA NA NA
4: NA NA NA NA NA NA NA NA NA NA
5: NA NA NA NA NA NA NA NA NA NA
6: NA NA NA NA NA NA NA NA NA NA

replacement = c(1, 2, 3, 4, 5)
# my_dt[i == 2, names(my_dt)[1:5]] = replacement
# my_dt[i == 2, names(my_dt)[1:5] := replacement]  
# my_dt[2, names(my_dt)[1:5]] = replacement
# my_dt[2, names(my_dt)[1:5] := replacement]  

但是,四个注释行中没有一个进行了正确的替换。感谢任何帮助!

谢谢,Canovice

苏梅德

或者,您可以执行以下操作:

x <- names(my_dt)[1:5]

my_dt[, (x) := lapply(.SD, as.numeric), .SDcols = x]

my_dt[2,  (x):= as.list(replacement)]

首先,我们将目标列转换my_dtnumeric.SDcols表示.SD我们感兴趣的列的子集.SD将中的所有列都保存在其中data.table(用于中的列除外by)。

将目标列转换为数值后,我们将通过引用更新值。

注意:不必事先定义x,所有操作均可即时完成。但是,如果您定义x,则需要将其包装起来()以确保data.table不查找该列x

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

data.table 语法通过 tstrsplit 根据其他表中的值设置列名和值

来自分类Dev

data.table和列名

来自分类Dev

data.table列名和变量定义

来自分类Dev

data.table如何从j获取列名?

来自分类Dev

如何使用data.table通过累积比较确定值

来自分类Dev

通过 data.table 中的变量列名访问 - 错误:“无法更改“.SD”的锁定绑定值

来自分类Dev

根据行号和条件选择data.table R行

来自分类Dev

如何通过索引和条件过滤R data.table

来自分类Dev

如何通过不同的列名合并两个data.table?

来自分类Dev

通过列名称的字符向量对data.table进行排序

来自分类Dev

根据多列名称替换 data.table 中的值

来自分类Dev

如何在data.table中选择具有动态确定的列名和截止限制的行?

来自分类Dev

如何用现有data.table的列名构造一个空的data.table?

来自分类Dev

Data.Table:通过引用有条件地更新.SD中的值

来自分类Dev

我如何融合具有串联列名的data.table

来自分类Dev

使用data.table包通过引用进行条件二进制连接和更新

来自分类Dev

按列名的data.table操作

来自分类Dev

计算data.table中的多个列名

来自分类Dev

R Data.Table重塑按列名

来自分类Dev

data.table联接中的列名标签

来自分类Dev

data.table切换列名

来自分类Dev

使用 data.table 列中的参数通过引用更新

来自分类Dev

Vuetify:通过多个值搜索v-data-table?

来自分类Dev

制作新的data.table时如何停止更新基本data.table?

来自分类Dev

如何通过引用更改data.table中每个组中的最后一个值

来自分类Dev

通过联接分配data.table行和列的子集

来自分类Dev

如何将值从data.table映射到data.table(R)

来自分类Dev

data.table通过多列合并

来自分类Dev

通过data.table(R)循环grepl()

Related 相关文章

  1. 1

    data.table 语法通过 tstrsplit 根据其他表中的值设置列名和值

  2. 2

    data.table和列名

  3. 3

    data.table列名和变量定义

  4. 4

    data.table如何从j获取列名?

  5. 5

    如何使用data.table通过累积比较确定值

  6. 6

    通过 data.table 中的变量列名访问 - 错误:“无法更改“.SD”的锁定绑定值

  7. 7

    根据行号和条件选择data.table R行

  8. 8

    如何通过索引和条件过滤R data.table

  9. 9

    如何通过不同的列名合并两个data.table?

  10. 10

    通过列名称的字符向量对data.table进行排序

  11. 11

    根据多列名称替换 data.table 中的值

  12. 12

    如何在data.table中选择具有动态确定的列名和截止限制的行?

  13. 13

    如何用现有data.table的列名构造一个空的data.table?

  14. 14

    Data.Table:通过引用有条件地更新.SD中的值

  15. 15

    我如何融合具有串联列名的data.table

  16. 16

    使用data.table包通过引用进行条件二进制连接和更新

  17. 17

    按列名的data.table操作

  18. 18

    计算data.table中的多个列名

  19. 19

    R Data.Table重塑按列名

  20. 20

    data.table联接中的列名标签

  21. 21

    data.table切换列名

  22. 22

    使用 data.table 列中的参数通过引用更新

  23. 23

    Vuetify:通过多个值搜索v-data-table?

  24. 24

    制作新的data.table时如何停止更新基本data.table?

  25. 25

    如何通过引用更改data.table中每个组中的最后一个值

  26. 26

    通过联接分配data.table行和列的子集

  27. 27

    如何将值从data.table映射到data.table(R)

  28. 28

    data.table通过多列合并

  29. 29

    通过data.table(R)循环grepl()

热门标签

归档