r - 如何在 lapply 中分配一个字符以评估循环 r 中的函数
问题描述
我在 R 中做一个运动有一点问题。这就是我的数据的样子:
df1 <- read.csv(text="Time, Depth, Conductivity, Temperature, Pressure,Turbidity
26/04/2018 15:12:53, 1.01087, 0.0388654, 8.23849, 11.1496, 46.5928
26/04/2018 15:12:53, 1.10582, 0.0388088, 8.23773, 11.2452, 47.8815
26/04/2018 15:12:53, 1.18670, 0.0394323, 8.23928, 11.3265, 47.2870
26/04/2018 15:12:54, 1.26171, 0.0393001, 8.24116, 11.4020, 47.9308
26/04/2018 15:12:54, 1.47019, 0.0382799, 8.24026, 11.6118, 45.1384
26/04/2018 15:12:54, 1.60172, 0.0390357, 8.24002, 11.7441, 45.5681
26/04/2018 15:12:54, 1.73643, 0.0387522, 8.24033, 11.8797, 45.8713
26/04/2018 15:12:54, 1.87313, 0.0390168, 8.23834, 12.0172, 45.0766")
# 我这样做是为了我的分析并得到每米深度的平均值(效果很好):
library(stringr)
df1$time <- sapply(strsplit(as.character(as.factor(df1$Depth)), " "), "[", 1)
meter <- str_replace(df1$time,"\\.",paste0(":"))
meter <-unlist(lapply(strsplit(meter, "\\:"), function(x)x[1]))
df1$time <- NULL
df1$meter <- meter
l <- split(df1, df1$meter)
l.result <- lapply(l, function(x){mean(x$Temperature)})
l.result <- as.data.frame(unlist(l.result))
l.result$meter <- rownames(l.result)
names(l.result) <- c("mean","meter")
df1$meter <- NULL
l.result$meter <- as.numeric(l.result$meter)
l.result <- l.result[order(l.result$meter),]
# 然而,现在我需要评估我的数据框的其他变量(电导率、压力等),我试图做一个循环并将“x$Temperature”替换为“x$Conductivity”,然后替换为x$Pressure(和其他变量)。所以我这样做了:
names <- c("x$Conductivity", "x$Temperature", "x$Pressure",
"x$Turbidity", "x$Sea_Pressure", "x$Salinity")
for(i in length(names)){
tmp <- names[i] # (temporal variable)
df1$time <- sapply(strsplit(as.character(as.factor(df1$Depth)), " "), "[", 1)
meter <- str_replace(df1$time,"\\.",paste0(":"))
meter <-unlist(lapply(strsplit(meter, "\\:"), function(x)x[1]))
df1$time <- NULL
df1$meter <- meter
l <- split(df1, df1$meter)
l.result<- lapply(l, function(x){mean(assign(tmp,names[i])}) #*Here's the problem
l.result <- as.data.frame(unlist(l.result))
l.result$meter <- rownames(l.result)
names(l.result) <- c("mean","meter")
df1$meter <- NULL
l.result$meter <- as.numeric(l.result$meter)
l.result <- l.result[order(l.result$meter),]
}
所以,我只需要正确的方法来使用分配,或者可能是另一种选择。
解决方案
推荐阅读
- javascript - 表单提交验证
- bash - 我怎样才能得到 2 个文件的输出,其中没有重复行 [来自任何文件]?
- java - 如何使用 DOM 从字符串中获取元素的值?
- java - 以这种方式使用伴生对象(静态)可能是一个很好的例子吗?
- mysql - MYSQL - 在 TEXT 列中存储 unicode 字符(表情符号)
- c# - 为什么我的 Image.Source 设置流后仍然是黑色的?
- javascript - Javascript - TypeError: x is not a function at done
- javascript - 从查询字符串中检索值并将其以隐藏值的形式发送 - javascript
- matlab - 如何结束 MATLAB/Octave 函数定义?
- c# - 如何将字符串传递到存储过程中的动态 sql