R向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])))

我正在研究&使用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])))
    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 ) )