动态选择列

时间:2016-04-06 13:09:34

标签: r

我是新来的,也是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)

1 个答案:

答案 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)