【发布时间】:2018-02-20 14:26:14
【问题描述】:
data.table DataDia 中有 10 列。
> head(DataDia[,c(7:16)])
Type soin 01 Type soin 02 Type soin 03 Type soin 04 Type soin 05 Type soin 06 Type soin 07 Type soin 08 Type soin 09 Type soin 10
1: crme de jour sérum démaquillant à rincer
2: masque démaquillant à rincer
3: crme de nuit sérum lotion
4: sérum lotion eau florale
5: crme de jour sérum démaquillant sans rinage
6: crme de nuit huile sérum
我只想应用一个通用函数 modify 包含 just only 这些列的二进制值。如果列有空单元格,那么它将被 0 替换,否则被 1 替换。 所以我写了这些代码:
DataDia[,DataDia[,c(5:10)]:=lapply(colnames(DataDia[,c(5:10)]), function(x) {if (DataDia[,x]==""){0} else {1}})]
但我收到此错误:
[.data.table(DataDia, ,:=(DataDia[, c(7:16)]) 中的错误, lapply(colnames(DataDia[, : LHS of := 必须是符号或原子 向量(列名或位置)。
请注意,我想使用 data.table 操作。但我不知道为什么这在这里不起作用?
提前谢谢你!
【问题讨论】:
-
什么是
:=?当然不是 R(使用<-)。另外,我不明白为什么DataDia[,DataDia[,c(5:10)]。缺少],据我所知,DataDia[, 5:10]会很好。 -
试试
lapply(DataDia[, 5:10], function(x) as.integer(x == ""))。 -
@RuiBarradas,我需要替换列以便使用
:=。事实上,我不想每次都添加其他列并删除原始列。我也认为你的建议,但它不起作用! -
您可以发布示例数据吗?请使用
dput(DataDia[, 5:10])的输出编辑问题。或者,如果dput(DataDia[1:20, 5:10])的输出太大。
标签: r data.table