【问题标题】:Syntax differences between Windows and LinuxWindows 和 Linux 的语法差异
【发布时间】:2020-09-29 21:04:24
【问题描述】:

我是 Windows 上的 R 用户,考虑到以下示例,我注意到在 Linux 上使用 R 时存在一些简单的区别:

a
10.3
14.7
11.4
10.6

在 Linux 上使用此命令时:

mean (df [,1])

我通常得到平均值,但是当我在 Windows 上执行此操作时,出现此错误:

Warning message:
In mean.default (df[,1]): argument is not numeric or logical: returning NA

有谁知道我是否可以在 Windows 上修复此问题并使用此 mean(df [,1]),例如 Linux,因为我需要使用 for 循环。

注意:我知道,如果在 Windows 上我使用 mean(df$a),我将能够取得平均值,但由于循环我需要使用以前的方式

我在 Windows 上的 R 版本是:

"R version 4.0.2 (2020-06-22)"

【问题讨论】:

  • 这也适用于 Windows,你确定你加载了 df 吗?
  • @Waldi,是的,我是。 =/

标签: r linux windows syntax


【解决方案1】:

非常强烈怀疑您最终会在 Linux 上得到 data.frame,在 Windows 上得到 tibble(数据帧的 tidyverse 扩展)。您可以使用class(df)查看。

library(tidyverse)

df <- data.frame(a=1:3)
mean(df[,1])
## [1] 2
df <- tibble(df)
mean(df[,1])
## [1] NA
## Warning message:
## In mean.default(df[, 1]) : argument is not numeric or logical: returning NA

造成这种差异的原因是data.frame 的单列子集是一个向量(除非您指定drop=FALSE),如果那是您选择的列的类,则属于numeric 类; tibble 的一列子集是一列小标题。

您可以使用df[[1]](可以很好地与循环/间接索引一起使用)来做您想做的事情,或者as.data.frame(df)[,1];第一个可能更好。

【讨论】:

    猜你喜欢
    • 2010-10-29
    • 1970-01-01
    • 2018-01-14
    • 2014-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    相关资源
    最近更新 更多