gpt4 book ai didi

r - 为什么 R 需要数据框的名称?

转载 作者:行者123 更新时间:2023-12-04 09:29:00 24 4
gpt4 key购买 nike

如果你有这样的数据框

mydf <- data.frame(firstcol = c(1,2,1), secondcol = c(3,4,5))

为什么会
mydf[mydf$firstcol,]

工作但是
mydf[firstcol,]

不会吗?

最佳答案

你可以这样做:

mydf[,"firstcol"]

请记住,该列排在第二位,而不是第一位。

在你的例子中,看看什么 mydf[mydf$firstcol,]给你,让我们分解一下:
> mydf$firstcol
[1] 1 2 1

真的如此 mydf[mydf$firstcol,]是相同的
> mydf[c(1,2,1),]
firstcol secondcol
1 1 3
2 2 4
1.1 1 3

所以您要求第 1、2 和 1 行。也就是说,您要求第 1 行与 mydf 的第 1 行相同。 ,您的第 2 行与 mydf 的第 2 行相同并且您的第 3 行与 mydf 的第 1 行相同;并且您要求这两列。

另一个问题是为什么以下不起作用:
> mydf[,firstcol]
Error in `[.data.frame`(mydf, , firstcol) : object 'firstcol' not found

也就是说,为什么当您这样要求时必须在列名周围加上引号,而当您这样做时却不需要 mydf$firstcol .答案只是您使用的运算符需要不同类型的参数。你可以看看 '$'查看 x$name 的形式,因此第二个参数可以是一个名称,它没有被引用。然后你可以查询 ?'[' ,这实际上会引导您进入相同的帮助页面。在那里你会找到以下内容,其中解释了它。请注意,“字符”向量需要引用条目(这就是您在 R(以及许多其他语言)中输入字符向量的方式。
i, j, ...: indices specifying elements to extract or replace.  Indices
are ‘numeric’ or ‘character’ vectors or empty (missing) or
‘NULL’. Numeric values are coerced to integer as by
‘as.integer’ (and hence truncated towards zero). Character
vectors will be matched to the ‘names’ of the object (or for
matrices/arrays, the ‘dimnames’): see ‘Character indices’
below for further details.

关于r - 为什么 R 需要数据框的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9174007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com