Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在rdatatable的'i'中传递名称向量? 库(data.table) dt=原始数据表(mtcars)_R_Data.table - Fatal编程技术网

如何在rdatatable的'i'中传递名称向量? 库(data.table) dt=原始数据表(mtcars)

如何在rdatatable的'i'中传递名称向量? 库(data.table) dt=原始数据表(mtcars),r,data.table,R,Data.table,假设我想用零替换变量的值,如果值小于变量的平均值。我想对一组变量这样做 这是base-r方式: for(c中的v('mpg','cyl','disp','hp','drat')){ dt[dt[[v]] 3: 22.8 0 0.0 0 3.85 2.320 18.61 1 1 4 1 #> 4: 21.4 0 258.0 0 0.00 3.215 19.44 1 0 3 1 #> 5: 0.0 8 360.0 175 0.00 3.

假设我想用零替换变量的值,如果值小于变量的平均值。我想对一组变量这样做

这是
base-r
方式:

for(c中的v('mpg','cyl','disp','hp','drat')){
dt[dt[[v]]<平均值(dt[[v]]),(v):=0]
}
然而,我正在寻找一种原生的
data.table
方法(如果有的话)。 如何告诉
data.table
v
视为变量名称,而不是
dt
中的变量

这正是我所想的:

for(c中的v('mpg','cyl','disp','hp','drat')){
dt[v<平均值(v),(v):=0]
}

这是在
数据中执行此操作的一种方法。表

库(data.table)
dt 1:21.03.902.62016.46014
#>  2: 21.0   0   0.0   0 3.90 2.875 17.02  0  1    4    4
#>  3: 22.8   0   0.0   0 3.85 2.320 18.61  1  1    4    1
#>  4: 21.4   0 258.0   0 0.00 3.215 19.44  1  0    3    1
#>  5:  0.0   8 360.0 175 0.00 3.440 17.02  0  0    3    2
#>  6:  0.0   0   0.0   0 0.00 3.460 20.22  1  0    3    1
#>  7:  0.0   8 360.0 245 0.00 3.570 15.84  0  0    3    4
#>  8: 24.4   0   0.0   0 3.69 3.190 20.00  1  0    4    2
#>  9: 22.8   0   0.0   0 3.92 3.150 22.90  1  0    4    2
#> 10:  0.0   0   0.0   0 3.92 3.440 18.30  1  0    4    4
#> 11:  0.0   0   0.0   0 3.92 3.440 18.90  1  0    4    4
#> 12:  0.0   8 275.8 180 0.00 4.070 17.40  0  0    3    3
#> 13:  0.0   8 275.8 180 0.00 3.730 17.60  0  0    3    3
#> 14:  0.0   8 275.8 180 0.00 3.780 18.00  0  0    3    3
#> 15:  0.0   8 472.0 205 0.00 5.250 17.98  0  0    3    4
#> 16:  0.0   8 460.0 215 0.00 5.424 17.82  0  0    3    4
#> 17:  0.0   8 440.0 230 0.00 5.345 17.42  0  0    3    4
#> 18: 32.4   0   0.0   0 4.08 2.200 19.47  1  1    4    1
#> 19: 30.4   0   0.0   0 4.93 1.615 18.52  1  1    4    2
#> 20: 33.9   0   0.0   0 4.22 1.835 19.90  1  1    4    1
#> 21: 21.5   0   0.0   0 3.70 2.465 20.01  1  0    3    1
#> 22:  0.0   8 318.0 150 0.00 3.520 16.87  0  0    3    2
#> 23:  0.0   8 304.0 150 0.00 3.435 17.30  0  0    3    2
#> 24:  0.0   8 350.0 245 3.73 3.840 15.41  0  0    3    4
#> 25:  0.0   8 400.0 175 0.00 3.845 17.05  0  0    3    2
#> 26: 27.3   0   0.0   0 4.08 1.935 18.90  1  1    4    1
#> 27: 26.0   0   0.0   0 4.43 2.140 16.70  0  1    5    2
#> 28: 30.4   0   0.0   0 3.77 1.513 16.90  1  1    5    2
#> 29:  0.0   8 351.0 264 4.22 3.170 14.50  0  1    5    4
#> 30:  0.0   0   0.0 175 3.62 2.770 15.50  0  1    5    6
#> 31:  0.0   8 301.0 335 0.00 3.570 14.60  0  1    5    8
#> 32: 21.4   0   0.0   0 4.11 2.780 18.60  1  1    4    2
#>mpg气缸显示hp drat wt qsec与am齿轮carb

由(v0.3.0)创建于2021-04-05这是在
数据中执行此操作的一种方法。表

库(data.table)
dt 1:21.03.902.62016.46014
#>  2: 21.0   0   0.0   0 3.90 2.875 17.02  0  1    4    4
#>  3: 22.8   0   0.0   0 3.85 2.320 18.61  1  1    4    1
#>  4: 21.4   0 258.0   0 0.00 3.215 19.44  1  0    3    1
#>  5:  0.0   8 360.0 175 0.00 3.440 17.02  0  0    3    2
#>  6:  0.0   0   0.0   0 0.00 3.460 20.22  1  0    3    1
#>  7:  0.0   8 360.0 245 0.00 3.570 15.84  0  0    3    4
#>  8: 24.4   0   0.0   0 3.69 3.190 20.00  1  0    4    2
#>  9: 22.8   0   0.0   0 3.92 3.150 22.90  1  0    4    2
#> 10:  0.0   0   0.0   0 3.92 3.440 18.30  1  0    4    4
#> 11:  0.0   0   0.0   0 3.92 3.440 18.90  1  0    4    4
#> 12:  0.0   8 275.8 180 0.00 4.070 17.40  0  0    3    3
#> 13:  0.0   8 275.8 180 0.00 3.730 17.60  0  0    3    3
#> 14:  0.0   8 275.8 180 0.00 3.780 18.00  0  0    3    3
#> 15:  0.0   8 472.0 205 0.00 5.250 17.98  0  0    3    4
#> 16:  0.0   8 460.0 215 0.00 5.424 17.82  0  0    3    4
#> 17:  0.0   8 440.0 230 0.00 5.345 17.42  0  0    3    4
#> 18: 32.4   0   0.0   0 4.08 2.200 19.47  1  1    4    1
#> 19: 30.4   0   0.0   0 4.93 1.615 18.52  1  1    4    2
#> 20: 33.9   0   0.0   0 4.22 1.835 19.90  1  1    4    1
#> 21: 21.5   0   0.0   0 3.70 2.465 20.01  1  0    3    1
#> 22:  0.0   8 318.0 150 0.00 3.520 16.87  0  0    3    2
#> 23:  0.0   8 304.0 150 0.00 3.435 17.30  0  0    3    2
#> 24:  0.0   8 350.0 245 3.73 3.840 15.41  0  0    3    4
#> 25:  0.0   8 400.0 175 0.00 3.845 17.05  0  0    3    2
#> 26: 27.3   0   0.0   0 4.08 1.935 18.90  1  1    4    1
#> 27: 26.0   0   0.0   0 4.43 2.140 16.70  0  1    5    2
#> 28: 30.4   0   0.0   0 3.77 1.513 16.90  1  1    5    2
#> 29:  0.0   8 351.0 264 4.22 3.170 14.50  0  1    5    4
#> 30:  0.0   0   0.0 175 3.62 2.770 15.50  0  1    5    6
#> 31:  0.0   8 301.0 335 0.00 3.570 14.60  0  1    5    8
#> 32: 21.4   0   0.0   0 4.11 2.780 18.60  1  1    4    2
#>mpg气缸显示hp drat wt qsec与am齿轮carb
由(v0.3.0)于2021-04-05创建,这里有一个选项:

for (x in c('mpg','cyl',  'disp',  'hp', 'drat')) {
   eval(substitute(dt[v < mean(v), v := 0], list(v=as.name(x))))
}
for(c中的x('mpg','cyl','disp','hp','drat')){
评估(替代(dt[v<平均值(v),v:=0],列表(v=as.name(x)))
}
这里有一个选项:

for (x in c('mpg','cyl',  'disp',  'hp', 'drat')) {
   eval(substitute(dt[v < mean(v), v := 0], list(v=as.name(x))))
}
for(c中的x('mpg','cyl','disp','hp','drat')){
评估(替代(dt[v<平均值(v),v:=0],列表(v=as.name(x)))
}

我想您正在寻找
get
,它允许您使用字符访问变量:

for (v in c('mpg','cyl',  'disp',  'hp', 'drat')) {
    dt[get(v) < mean(get(v)), c(v) := 0]
}
您将看到它的行为与使用=F的
不同:

dt[,"mpg"] # get a data.table of one column, idem dt[,.(mpg)]
dt[,mpg] # get a vector

var <- "mpg"
dt[,var] #error

dt[,get(var)] # same as dt[,mpg]
dt[,var,with = F] # same as dt[,"mpg"]
dt[,“mpg”]#获取一列的data.table,idem dt[,(mpg)]
dt[,mpg]#得到一个向量

var我猜您正在寻找
get
,它允许您使用字符访问变量:

for (v in c('mpg','cyl',  'disp',  'hp', 'drat')) {
    dt[get(v) < mean(get(v)), c(v) := 0]
}
您将看到它的行为与使用=F的
不同:

dt[,"mpg"] # get a data.table of one column, idem dt[,.(mpg)]
dt[,mpg] # get a vector

var <- "mpg"
dt[,var] #error

dt[,get(var)] # same as dt[,mpg]
dt[,var,with = F] # same as dt[,"mpg"]
dt[,“mpg”]#获取一列的data.table,idem dt[,(mpg)]
dt[,mpg]#得到一个向量

var另一种
data.table
方法是使用
set()
函数及其
i=
参数通过引用进行更新