我是新来的,也是R的初学者。
我目前正在努力解决以下问题。 我有一个宽格式的数据框,每个参与者有约200个试验(逐列)(逐行)。 我现在需要为每个试验计算一个变量,指示参与者是否看到目标或控件
我为一个这样的试验编写了代码:
data_final$target.41 <- ifelse(data_final$word_position.41 == 1 & data_final$line_position.41 == "left" | data_final$word_position.41 == 2 & data_final$line_position.41 == "right" , 1, 0)
这是有效的,根据参与者在此试验中看到的内容,给我一个1和0的列。 (41表示第41次试验)
现在我想用斜率动态地为所有试验做这个。
然而,我糟糕的尝试根本不起作用:
target.i <- NULL
temp <- NULL
for (i in 41:281) {
temp <- ifelse(data_final$word_position.i == 1 & data_final$line_position.i == "left" | data_final$word_position.i == 2 & data_final$line_position.i == "right" , 1, 0)
target.i <- rbind(target.i,temp)
}
data_final <- cbind(data_final,target.i)
答案 0 :(得分:0)
这里的问题是像 word_position.i 这样的变量名称不会与 i 循环。你可以这样做:
target <- data.frame(matrix(nrow = dim(data_final)[1], ncol = 0))
for (i in 41:281) {
word_position.i <- paste("word_position.", i, sep = "")
line_position.i <- paste("line_position.", i, sep = "")
target.i <- paste("target.", i, sep = "")
temp <- ifelse(data_final[,word_position.i] == 1 & data_final[,line_position.i] == "left" | data_final[,word_position.i] == 2 & data_final[,line_position.i] == "right" , 1, 0)
target[,target.i] <- temp
}
data_final <- cbind(data_final,target)