-1

矩阵/数据框和所有东西再次出现同样的问题......这次我尝试做散点图。我很确定我能做到,但不幸的是,问题总是出现。

这是我的数据:

id  cond    S1.pre  S2.pre  S1.post S2.post V1.pre  V2.pre  V1.post V2.post
  1 aer       21    31        25    35         7     1        19     4
  2 aer       15    26        21    29        13    11        16    14
  3 aer       18    27        23    31         8     2         3     3
  4 aer       17    31        18    39        13    11        15    14
  5 aer       15    26        16    29        26    15        32    20

使用该函数读取 txt 文件:

data <- read.table("Stats1.13.HW.03.txt", header=T)

> class("data")
[1] "character"

^ 奇怪?

试图绘制它:

plot(data2$S1.pre~data2$S2.pre~data2$V1.pre~data2$V2.pre, col="green")

Error in (function (formula, data = NULL, subset = NULL, na.action = na.fail,  : 
object is not a matrix

好吧,这不是问题。让我做一个矩阵!

data <- as.matrix(data)

惊喜?

绘图(数据$S1.pre~data$S2.pre~data$V1.pre~data$V2.pre,col="green")

Error in data$V2.pre : $ operator is invalid for atomic vectors

如何解决我的矩阵/原子向量/数字等问题...

4

1 回答 1

2

首先class("data")意味着'给我“数据”字符串的类',这是预期的character。你应该class(data)改用。

你的代码中没有data2,所以不清楚这个对象里面有什么。假设我们使用data.

您尝试像这样绘制公式data$S1.pre ~ data$S2.pre ~ data$V1.pre ~ data$V2.pre,它甚至不接近有效公式。

如果要创建多个散点图,可以使用pairs

pairs(~data$S1.pre + data$S2.pre + data$V1.pre + data$V2.pre)

编辑

如果您有矩阵,则不能使用$符号来访问列,但可以使用如下语法:

data[, V1.pre]

您还应该记住,矩阵中的所有字段都必须是相同的类型,因此在您的情况下,所有值都将转换为字符:

> apply(as.matrix(data[1,]), 2, class)
     id        cond      S1.pre      S2.pre     S1.post     S2.post 
"character" "character" "character" "character" "character" "character" 
V1.pre      V2.pre     V1.post     V2.post 
"character" "character" "character" "character" 

如果你想要数字,你应该省略cond列:

> data.matrix <- (data[, -2])
> apply(data.matrix, 2, class)
   id    S1.pre    S2.pre   S1.post   S2.post    V1.pre    V2.pre   V1.post 
"integer" "integer" "integer" "integer" "integer" "integer" "integer" "integer" 
V2.post 
"integer"
于 2013-10-21T11:18:48.680 回答