【发布时间】:2020-04-19 10:26:41
【问题描述】:
我正在寻找一种优雅或高效的方式来选择R 的data.table 中的列。
我个人看重灵活的方法。
因此,我倾向于根据列的特征而不是名称来引用列。
例如,我想将所有列的值设置为小写。
如果我在这个操作中包含所有列,像这样
dt[, lapply(.SD, tolower),.SDcols = names(dt)]
数字和整数列也将转换为(小写)字符。
这是不可取的,因此我首先将所有字符列标识为以下内容:
char_cols <- as.character(names(dt[ , lapply(.SD, function(x) which(is.character(x)))]))
然后将char_cols 传递给 .SDcols
dt[ , lapply(.SD, tolower), .SDcols = char_cols ]
如果相反,您的所有列都是字符(例如,为了避免在读取数据时出现类型转换问题)我会这样做
char_cols <- as.character(names(dt[ , lapply(.SD, function(x) which(all(is.na(as.numeric(x)))))]))
但是应该确定的是,没有任何列是混合类型的:即包含一些字符串和一些数值。
有没有人建议更优雅或更有效地处理这个问题?
【问题讨论】:
标签: r data.table