【问题标题】:Insert or print a column name inside a data table call [duplicate]在数据表调用中插入或打印列名[重复]
【发布时间】:2020-07-21 14:01:21
【问题描述】:

我有一个看起来很简单的问题,但是我自己无法解决。

我可以在数据表调用中以某种方式插入或打印列名吗?我有这样的想法:

col_names = c("column1","column2")
for (col in col_names){
        datatable$col ...
}

col_names = c("column1","column2")
for (col in col_names){
        datatable[,col] ...
}

我最终想做的是将某些列的变量转换为有序因子。由于有很多列,我正在寻找一种更简洁的方法,而不是只对同一行进行 20 次编码,唯一的区别是列名。

【问题讨论】:

  • 感谢您的回答!是的,我不只是想打印它们。我刚刚编辑了我的问题以添加更多细节。抱歉,规格不足。

标签: r data.table


【解决方案1】:

您是要打印数据表中的列名还是整列?

你可以试试这样的

col_names = c("column1","column2")
for (i in seq_along(col_names)){
        print(datatable[col_names[[i]]])
}

或者,如果您只想打印名称。

col_names = c("column1","column2")
for (i in seq_along(col_names)){
        print(col_names[[i]])
}

另外,您可能想查看R for Data Science 中的迭代章节。

【讨论】:

  • 感谢您的回答!抱歉,我可能需要在我的问题中说明这一点。但是不,我实际上想对单个列执行转换,而不仅仅是打印它们。
  • 哦!那么我绝对会为此使用 tidyverse 和 purr 函数。您可以使用 purr 中的 map() 跨多个列执行功能。
【解决方案2】:

也许,您可以尝试使用lapplySDcolscol_names 上应用函数。你可以试试这样的:=

library(data.table)
datatable[, (col_names) := lapply(.SD, function(x) factor(x, ordered =  TRUE)), 
             .SDcols = col_names]

在这里,我们将factor(x, ordered = TRUE) 应用于col_names 中的每一列,其中x 是每一列的名称。

【讨论】:

    猜你喜欢
    • 2019-01-24
    • 1970-01-01
    • 2016-10-20
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多