我有以下数据框,我使用read.table()
导入到R中(我在read.table()
中合并了read_data()
这是我创建的函数,如果文件名是没有写得恰到好处):
> raw_data <- read_data("n44.txt")
[1] #### Reading txt file ####
> head(raw_data)
subject block trial_num soa target_identity prime_type target_type congruency prime_exposure target_exposure button_pressed rt ac
1 99 1 1 200 82 9 1 9 0 36 1 1253 1
2 99 1 2 102 95 2 1 2 75 36 1 1895 1
3 99 1 3 68 257 2 2 1 75 36 2 1049 1
4 99 1 4 68 62 9 1 9 0 36 1 1732 1
5 99 1 5 34 482 9 3 9 0 36 3 765 1
6 99 1 6 68 63 9 1 9 0 36 1 2027 1
然后我在我创建的raw_data
函数中使用early_prep()
(我只复制了函数的相关部分):
early_prep <- function(file_name, keep_rows = NULL, id = NULL){
if (is.null(id)) {
# Stops running the function
stop("~~~~~~~~~~~ id is missing. Please provide name of id column ~~~~~~~~~~~")
}
# Call read_data() function
raw_data <- read_data(file_name)
if (!is.null(keep_rows)) {
raw_data <- raw_data[keep_rows, ]
# Print to console
print("#### Deleting unnecesarry rows in raw_data ####", quote = FALSE)
}
print(dim(raw_data))
print(head(raw_data))
return(raw_data)
}
}
我的问题在于raw_data <- raw_data[keep_rows, ]
。
当我输入keep_rows = "raw_data$block > 1"
时,这就是我得到的:
> x1 <- early_prep(file_name = "n44.txt", keep_rows = "raw_data$block > 1", id = "subject")
[1] #### Reading txt file ####
[1] #### Deleting unnecesarry rows in raw_data ####
[1] 1 13
subject block trial_num soa target_identity prime_type target_type congruency prime_exposure target_exposure button_pressed rt ac
NA NA NA NA NA NA NA NA NA NA NA NA NA NA
如何解决这个问题,以便只删除我想要的行?
非常感谢任何帮助
最佳,
Ayala
答案 0 :(得分:0)
问题在于您将条件作为字符串传递而不是作为真实条件传递,因此R无法在需要时对其进行评估。
如果您仍想将其作为字符串传递,则需要在正确的位置解析并评估它,例如:
cond = eval(parse(text=keep_rows))
raw_data = raw_data[cond,]
这应该有效,我想