R向for循环中的向量添加值
我正在研究&使用for循环迭代我的数据:R向for循环中的向量添加值,r,R,我正在研究&使用for循环迭代我的数据: pos = c(1256:1301,6542:6598) sd_all = null for (i in pos){ nameA = paste("A", i, sep = "_") nameC = paste("C", i, sep = "_") resA = assign(nameA, unlist(lapply(files, function(x) x$percentageA[x$position==i])))
pos = c(1256:1301,6542:6598)
sd_all = null
for (i in pos){
nameA = paste("A", i, sep = "_")
nameC = paste("C", i, sep = "_")
resA = assign(nameA, unlist(lapply(files, function(x) x$percentageA[x$position==i])))
resC = assign(nameC, unlist(lapply(files, function(x) x$percentageC[x$position==i])))
sd_A = sd(resA)
sd_C = sd(resC)
sd_all = ?
}
现在我想生成一个名为“sd_all”的向量,它包含resA和resC的标准偏差。我不能只做'sd_all=c(sd(resA),sd(resC))',因为这样我在'pos'中只使用一个值。我想对“pos”中的所有值执行此操作。看起来您最好使用
sd\u all
作为列表对象。这样,您就可以分别插入两个值(sd(resA)
和sd(resC)
)
初始化列表很简单(这将替换代码的第二行):
循环之后,如果您愿意,可以将此列表作为列插入data.frame中。您希望
sd\u all
的外观如何?由于循环的每次迭代都会在sd_all
中插入两个值,可能它应该是一个列表,或者是一个data.frame?@rosscova:稍后我将使用'sd_all'作为已经存在的data.frame中的一列。有两种方法可以做到这一点,您可以将sd_a
和sd_B
作为单独的列添加到该data.frame中(因为每个迭代有2个值,所以data.frame的每行每列有一个值),或者您可以将其设置为每个“单元格”有2个值的列表列@rosscova:但现在我只想让它成为一个向量,它的值如下:1256位的sd_a,1256位的sd_C,1257位的sd_a,1257位的sd_C,……好吧,看起来一个列表
可能就是你想要的。我已经添加了一个答案,并给出了一个方法。
sd_all <- list()
sd_all[[ i ]] <- c( sd( resA ), sd( resC ) )