read.csv;check.names=F; R;看图片,为什么它会起作用?
read.csv ;check.names=F; R;Look at the picture,why it works a treat?
please see the the column name "if" in the second column,the deifference is :when check.name=F
,"." beside "if" disappear
对不起代码,因为我尝试输入一些代码来生成如图所示的 data.frame,但是由于“if”而失败了。我们知道“if”是一个保留字在 R 中(如 else、for、while、function)。在这里,我特意使用“if”作为列名(第 2 列),看看 R 是否会生成一些新奇的东西。
所以使用另一种方式,我在 excel 中键入“if”并保存为 csv 格式以便使用 read.csv
.
问题是:
为什么是“如果”。更改为“如果”?(在我使用 check.names=FALSE 之后)
enter image description here
?read.csv
以类似的方式描述 check.names=
:
check.names: logical. If 'TRUE' then the names of the variables in the
data frame are checked to ensure that they are syntactically
valid variable names. If necessary they are adjusted (by
'make.names') so that they are, and also to ensure that there
are no duplicates.
默认操作是允许您执行 dat$<column-name>
之类的操作,但不幸的是 dat$if
将失败并显示 Error: unexpected 'if' in "dat$if"
,因此 check.names=TRUE
将其更改为解析器不会绊倒。但请注意,即使 dat$if
无效,dat[["if"]]
也有效。
如果您想知道 check.names=FALSE
是否曾经是一件 坏事 ,那么想象一下:
dat <- read.csv(text = "a,a\n2,3")
dat
# a a.1
# 1 2 3
dat <- read.csv(text = "a,a\n2,3", check.names = FALSE)
dat
# a a
# 1 2 3
在第二种情况下,如何访问第二列按名称?仅限 dat$a
returns 2
。但是,如果您不想使用 $
或 [[
,而是可以依赖列的位置索引,那么 dat[,colnames(dat) == "a"]
会 return 它们。
please see the the column name "if" in the second column,the deifference is :when check.name=F
,"." beside "if" disappear
对不起代码,因为我尝试输入一些代码来生成如图所示的 data.frame,但是由于“if”而失败了。我们知道“if”是一个保留字在 R 中(如 else、for、while、function)。在这里,我特意使用“if”作为列名(第 2 列),看看 R 是否会生成一些新奇的东西。
所以使用另一种方式,我在 excel 中键入“if”并保存为 csv 格式以便使用 read.csv
.
问题是: 为什么是“如果”。更改为“如果”?(在我使用 check.names=FALSE 之后)
enter image description here
?read.csv
以类似的方式描述 check.names=
:
check.names: logical. If 'TRUE' then the names of the variables in the
data frame are checked to ensure that they are syntactically
valid variable names. If necessary they are adjusted (by
'make.names') so that they are, and also to ensure that there
are no duplicates.
默认操作是允许您执行 dat$<column-name>
之类的操作,但不幸的是 dat$if
将失败并显示 Error: unexpected 'if' in "dat$if"
,因此 check.names=TRUE
将其更改为解析器不会绊倒。但请注意,即使 dat$if
无效,dat[["if"]]
也有效。
如果您想知道 check.names=FALSE
是否曾经是一件 坏事 ,那么想象一下:
dat <- read.csv(text = "a,a\n2,3")
dat
# a a.1
# 1 2 3
dat <- read.csv(text = "a,a\n2,3", check.names = FALSE)
dat
# a a
# 1 2 3
在第二种情况下,如何访问第二列按名称?仅限 dat$a
returns 2
。但是,如果您不想使用 $
或 [[
,而是可以依赖列的位置索引,那么 dat[,colnames(dat) == "a"]
会 return 它们。