如果已经在其他地方提出了要求,请提前道歉,但是我尝试了不同的尝试,到目前为止没有任何效果。
我研究了23种测量空气污染的设备的数据。对于每个设备,我对4个参数(平均值,最大值,最小值和标准差)感兴趣。我最终获得了4个带有23个值的列表,代表每个设备的参数。
var_names <- ls(envir = globalenv(), pattern = "^Device")
Corrected_values<- mget(var_names)
Device_mean <- lapply(Corrected_values, mean)
Device_max <- lapply(Corrected_values, max)
Device_min <- lapply(Corrected_values, min)
Device_sd <- lapply(Corrected_values, sd)
现在,我希望创建一个数据框“设备”,它将这4个列表合并在一起。然后,该具有4列23行的数据框(或矩阵)将可以导出以供进一步使用。到目前为止,我的所有尝试都导致矩阵错误。
# rename the column names
cols <- c("Mean", "Maximum", "Minimum", "Stdv")
感谢您的帮助
答案 0 :(得分:0)
这是基本的R方式。
var_names <- ls(envir = globalenv(), pattern = "^Device")
Corrected_values <- mget(var_names)
f <- function(x){
data.frame(Mean = mean(x), Maximum = max(x), Minimum = min(x), Stdv = sd(x))
}
do.call(rbind, Map(f, Corrected_values))
# Mean Maximum Minimum Stdv
#Device1 5.006 5.8 4.3 0.3524897
#Device2 6.588 7.9 4.9 0.6358796
#Device3 5.936 7.0 4.9 0.5161711
数据
Device1 <- iris[iris$Species == 'setosa', 'Sepal.Length']
Device2 <- iris[iris$Species == 'virginica', 'Sepal.Length']
Device3 <- iris[iris$Species == 'versicolor', 'Sepal.Length']
答案 1 :(得分:0)
实际上,瑞·巴拉达斯(Rui Barradas)提出的建议是可行的,但这似乎是因为
f <- function(x){
data.frame(Mean = mean(x), Maximum = max(x), Minimum = min(x), Stdv = sd(x))
}
使用脚本中预先创建的4个列表自动识别“平均值=平均值(x),最大值=最大值(x),最小值=最小值(x),标准差= sd(x)”的含义。 不幸的是,如果我希望添加创建的其他列表,则无法使用。确实,现在假设我有8个列表,而不是之前给出的前4个列表:
var_names <- ls(envir = globalenv(), pattern = "^Device")
Corr_values<- mget(var_names)
Device_mean <- lapply(Corr_values, mean) #list 1
Device_max <- lapply(Corr_values, max) #list2
Device_min <- lapply(Corr_values, min) #list3
Device_sd <- lapply(Corr_values, sd) #list4
hours_per_year <- 365*24
multiply <- function(x, factor) {
x * hours_per_year}
Device_average_annual_dose <- lapply(Device_mean, multiply, factor = hours_per_year) #list5
var_names_dates <- ls(envir = globalenv(), pattern = "^Date")
Corr_dates<- mget(var_names_dates)
Device_hours_with_values <- lapply(Corr_dates, length) #list6
a <- (100/hours_per_year)
multiply <- function(x, factor) {
x * a}
Device_availability <- lapply(Device_hours_with_values, multiply, factor = a) #list7
subtract_me = 100
Device_unavailability <- lapply(Device_availability, function(x, subt_amnt) subt_amnt - x,subt_amnt = subtract_me) #list8
这些8个列表正确存储在R中,但是在这种情况下,当我尝试使用8个列表名称来建议我合并8个列表时,我会收到错误消息:
Error in max(x) : invalid 'type' (list) of argument
我不明白,因为这些正是我希望合并的一些列表...