我正在尝试对名为的表进行子集化cars
,如下所示.我不希望Country
我的子表中的列,所以我曾经[,-1]
删除第一列,但它将我的新变量分配cars.use
给-1
.这里发生了什么?
> library(data.table) > cars <- fread('cars.csv', header = TRUE) > typeof(cars) [1] "list" > head(cars) Country Car MPG Weight Drive_Ratio Horsepower Displacement Cylinders 1: U.S. Buick Estate Wagon 16.9 4.360 2.73 155 350 8 2: U.S. Ford Country Squire Wagon 15.5 4.054 2.26 142 351 8 3: U.S. Chevy Malibu Wagon 19.2 3.605 2.56 125 267 8 4: U.S. Chrysler LeBaron Wagon 18.5 3.940 2.45 150 360 8 5: U.S. Chevette 30.0 2.155 3.70 68 98 4 6: Japan Toyota Corona 27.5 2.560 3.05 95 134 4 > cars.use <- cars[,-1] > cars.use [1] -1
akrun.. 7
通过使用fread
,我们得到了一个data.table
.要集,一个data.table
, with=FALSE
都可以使用.
cars[,-1, with=FALSE]
它描述于 ?data.table
默认情况下,= TRUE,j在x的帧内计算; 列名可以用作变量.当with = FALSE时,j是列名的字符向量或要选择的列位置的数字向量,返回的值始终是data.table.with = FALSE在data.table中通常很有用,可以动态选择列.
cars <- data.table(Col1= 1:5, Col2= 6:10)
Rich Scriven.. 6
您可以在通话中解决此问题fread()
.
如果您将fread()
呼叫更改为按名称(或按编号)删除第一列,则读取时将跳过该列.
fread("cars.csv", drop = "Country", header = TRUE)
您在子集化方面遇到问题的原因是因为默认情况下fread()
返回数据表.如果需要数据框,请将data.table
参数更改为FALSE
.
cars <- fread("cars.csv", header = TRUE, data.table = FALSE)
现在我们有了一个数据框,cars[,-1]
您使用的代码将起作用.如果要删除列并返回数据框,请将这两者结合起来.
fread("cars.csv", drop = "Country", header = TRUE, data.table = FALSE)
有关help(fread)
详细信息,请参阅
通过使用fread
,我们得到了一个data.table
.要集,一个data.table
, with=FALSE
都可以使用.
cars[,-1, with=FALSE]
它描述于 ?data.table
默认情况下,= TRUE,j在x的帧内计算; 列名可以用作变量.当with = FALSE时,j是列名的字符向量或要选择的列位置的数字向量,返回的值始终是data.table.with = FALSE在data.table中通常很有用,可以动态选择列.
cars <- data.table(Col1= 1:5, Col2= 6:10)
您可以在通话中解决此问题fread()
.
如果您将fread()
呼叫更改为按名称(或按编号)删除第一列,则读取时将跳过该列.
fread("cars.csv", drop = "Country", header = TRUE)
您在子集化方面遇到问题的原因是因为默认情况下fread()
返回数据表.如果需要数据框,请将data.table
参数更改为FALSE
.
cars <- fread("cars.csv", header = TRUE, data.table = FALSE)
现在我们有了一个数据框,cars[,-1]
您使用的代码将起作用.如果要删除列并返回数据框,请将这两者结合起来.
fread("cars.csv", drop = "Country", header = TRUE, data.table = FALSE)
有关help(fread)
详细信息,请参阅