这是我第一次使用R,所以我觉得我有一些基本的错误。 请检查我的代码
rm(list = ls())
src_dir = c("C:/Temp/R language/assignment1")
src_file = list.files(src_dir)
src_file_cnt = length(src_file)
for(i in 1:src_file_cnt){
assign(paste0("x",i),
read.csv(paste0(src_dir,"/",src_file[i]),sep = ","))
}
src_file_cnt
[1] 1000
x1
X x
1 1 22.543542
2 2 104.090425
3 3 41.796371
4 4 63.173507
5 5 70.861756
6 6 66.141905
7 7 80.175190
8 8 112.855912
9 9 61.318575
10 10 -47.001973
a = c( for( i in 1:1000) {mean(xi[,2])})
Error in mean(xi[, 2])
我希望得到所有x数据的平均值并使它们成为向量。 我尝试使用'循环,但有一个错误,无法找到xi。 如何更改我的代码??
答案 0 :(得分:0)
在您的问题中,R不会像您调用它那样将xi解释为x1,x2或x3。 如果你试图从多个csv中得到列的平均值,那么我会以不同的方式处理问题。
我个人更喜欢一起阅读多个csv并将它们存储在一个列表中。所以我会做以下事情:
all_csv = lapply(paste0(src_dir,"/",src_file[i]), read.csv)
现在要计算每个文件的列的平均值,您可以使用
t(sapply(all_csv, sapply, mean))
一般情况下,我建议您尽可能使用apply系列中的函数而不是R中的for循环。
答案 1 :(得分:0)
数据框只是列的列表,因此您可以对其进行处理,对其进行应用,并为每列调用mean
。
尝试例如。
df <- data.frame(x = rnorm(10), y = rnorm(10), z = "some string")
numeric_columns <- df[,c("x", "y")]
lapply(numeric_columns, mean)