我需要解释数据框,总和和平均命令如果操作下面的代码,我可以获得数据文件列表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乘200矩阵的全数字。有24个数据文件。另外我想在加载数据时保持200×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
答案 0 :(得分:2)
此处查看[
和[[
(同一页面)的帮助非常有用
引用相关部分(因为prepList
是一个列表)
递归(类似列表)对象
索引[类似于原子向量并选择指定元素的列表。
两者[[和$选择列表中的单个元素。主要区别在于$不允许计算指数,而[[确实如此]。 x $ name相当于x [[“name”,exact = FALSE]]。此外,[[可以使用精确参数控制。
的部分匹配行为
所以,
prepList[1]
选择长度为1的列表。此列表的第一个元素是data.frame
preplist[[1]]
将选择prepList
的第一个元素,即您想要的data.frame。
话虽如此,我不确定你是否真的想要取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
如果您希望每个数据框的列均值为prepList
或每列的总和,请使用colMeans
,colSums
或lapply
的嵌套版本用手段,
eg
library(data.table)
rbindlist(lapply(prepList, function(x) lapply(x, mean)))
## a b
## 1: 3 4
## 2: 4 3
或使用plyr
和ldply
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)))