> library(lme4) > library(MASS) > > # 更改此行以使用您的数据框变量 > data <- data > > # 处理你的自变量 "汉语水平"、"请求情景" > data$Chinese_level <- as.factor(data$Chinese.proficiency.levels) > data$Request_scenario <- as.factor(data$Request.contexts) > > # 分别对各种策略类型处理泊松分布检验和 GLMM 模型 > strategy_types <- c("Direct", "Conventionally.indirect", "Non.conventionally.indirect") > > for (strategy_type in strategy_types) { + # 提取策略类型所对应的无声停顿频次 + filled_pause_frequency_name <- paste(strategy_type, "strategy.filled.pause.frequency", sep = ".") + Filled.pause.frequency <- data[, filled.pause.frequency.name] + + # 泊松分布检验 + poisson_test <- fitdistr(Filled.pause.frequency, "Poisson") + + # 输出泊松分布检验结果 + cat("Poisson test for", filled.pause.frequency.name, ":\n") + print(poisson_test) + + # 构建GLMM模型 + glmm_formula <- as.formula(paste(colnames(data)[colnames(data) == filled_pause_frequency_name], "~ Chinese.proficiency.levels * Request.contexts + (1|speakers)")) + glmm_model <- glmer(glmm_formula, data = data, family = poisson(link = "log")) + + # 输出GLMM模型结果 + cat("GLMM model for", filled.pause.frequency.name, ":\n") + print(summary(glmm_model)) + } Error: object 'filled.pause.frequency.name' not found
时间: 2023-06-27 08:04:22 浏览: 208
这个错误是因为在循环中,您定义了一个变量 `filled_pause_frequency_name`,但在代码中使用时将其写成了 `filled.pause.frequency.name`,因此R无法找到该变量。您需要将 `filled.pause.frequency.name` 更正为 `filled_pause_frequency_name`。
相关问题
> data <- fread("/Users/imac/Desktop/summary_process/output_summary15.csv") > library(data.table) > setwd("/Users/imac/Desktop/summary_process") > data <- fread("output_summary15.csv") > cols <- c(4, 5, 25, 17, 26, 10) > selected_data <- data[, cols] Error in `[.data.table`(data, , cols) : j (the 2nd argument inside [...]) is a single symbol but column name 'cols' is not found. Perhaps you intended DT[, ..cols]. This difference to data.frame is deliberate and explained in FAQ 1.1.
这个错误是因为在`data[, cols]`中,`cols`被解释为一个列名,而不是列的索引。可以使用`..cols`来解决这个问题,因为`..`告诉`data.table`使用变量的值而不是变量名。
以下是修改后的代码:
```R
library(data.table)
# 设置工作目录
setwd("/Users/imac/Desktop/summary_process")
# 读取csv文件
data <- fread("output_summary15.csv")
# 选择需要的列
cols <- c(4, 5, 25, 17, 26, 10)
selected_data <- data[, ..cols]
# 将列粘在一起
text <- apply(selected_data, 1, function(x) {
paste(x[1], x[2], "blastx", x[3], x[4], "blastn", x[5], x[6], sep = "::")
})
# 使用gsub函数将空格替换为.
text <- gsub(" ", ".", text)
# 将文本转化为数据框
new_data <- data.frame(text)
# 写入新文件
write.csv(new_data, "new_file.csv", row.names = FALSE)
```
请注意,我只是修改了第5和第8行的代码,以便正确选择列。
> library(data.table) > > # 设置工作目录 > setwd("/Users/imac/Desktop/summary_process") > > # 读取csv文件 > data <- fread("output_summary15.csv") > > # 选择需要的列 > cols <- c(V1, V2, V24, V15, V3.y, V7) Error: object 'V1' not found >
这个错误是因为`V1`等变量没有被定义。您需要将列名(或列索引)作为字符向量传递给`cols`变量。请尝试将`cols`定义为字符向量,像这样:
```
cols <- c("V1", "V2", "V24", "V15", "V3.y", "V7")
```
或者,您可以使用列索引而不是列名,像这样:
```
cols <- c(1, 2, 24, 15, 3, 7)
```
然后,您可以使用`data[, ..cols]`选择需要的列。
阅读全文