1

我需要对数据框、求和和平均命令的解释如果运行下面的代码,我可以获得数据文件列表Preplist。然而,由于一些错误,我需要解释的命令不起作用。

我的猜测是我加载的数据没有数据框,而只是每个数据文件的数字列表。为了对每个数据文件求和或取平均值,我需要数据框。(当我检查行数时,除了 NULL 之外什么都没有)。

我想我需要为加载的数据(200x200 矩阵)制作数据框,并且在原始数据中必须忽略第一行和第一列。

这是我的代码:

Prepfiles <- list.files(pattern=".csv")
Preplist <- lapply(Prepfiles, read.table, sep = '\t', 
                  na.string = '', header = TRUE, skip=1)
bigPreplist <- do.call(rbind, Preplist)

我需要立即加载数据并绘制数据(将每三个数据文件相加并绘制)。但是,我无法运行命令sum()mean()使用我的Preplist[1:24]

我使用的都是 200 x 200 矩阵中的数字。有 24 个数据文件。另外,我想在加载数据时保留 200 x 200 矩阵形式,但是通过我的编码,如果我检查nrow(Preplist[1])是否可以在加载数据时保留相同的数据框,则没有行数?还是我必须制作新的数据框?

以下是我使用 sum 和 mean 命令得到的错误:

> nrow(Preplist)
NULL
> sum(Preplist[1])
Error in sum(Preplist[1]) : invalid 'type' (list) of argument
> mean(Preplist[1])
[1] NA
Warning message:
In mean.default(Preplist[1]) :
  argument is not numeric or logical: returning NA
4

1 回答 1

2

在这里查看和的帮助很有用[[[它们是同一页面)

引用相关部分(如prepList列表)

递归(类列表)对象

[ 索引类似于原子向量并选择指定元素的列表。

[[ 和 $ 都选择列表的单个元素。主要区别在于 $ 不允许计算索引,而 [[ 允许。x$name 等价于 x[["name", exact = FALSE]]。此外,[[ 的部分匹配行为可以使用精确参数来控制。

所以,

prepList[1]

选择长度为 1 的列表。此列表的第一个元素将是您的data.frame

preplist[[1]] 

将选择第一个元素prepList是您想要的 data.frame。

话虽这么说,我不确定你是否真的想要取 a 的平均值或总和data.frame,你会想确保这些返回你想要的。

例如

prepList <- list(data.frame(a=1:5,b=2:6), data.frame(a=2:6,b=1:5))

# this will give a warning
mean(prepList[[1]])

## a b 
## 3 4 
## Warning message:
## mean(<data.frame>) is deprecated.
## Use colMeans() or sapply(*, mean) instead. 


## this will give a single number

sum(prepList[[1]])

## 35

如果您想要每个 data.frame 的列均值prepList或每列的总和,请使用colMeans,colSums或 with mean 的嵌套版本lapply

eg 
library(data.table)
rbindlist(lapply(prepList, function(x) lapply(x, mean)))

##    a b
## 1: 3 4
## 2: 4 3

或使用plyrldply

library(plyr)
 ldply(prepList, function(x) {sapply(x, mean)})

或将自己限制为数字列

使用 plyr

ldply(prepList,  numcolwise(mean))

使用过滤器

rbindlist(lapply(prepList, function(x) lapply(Filter(is.numeric,x), mean)))
于 2013-02-26T22:59:46.217 回答