簡體   English   中英

根據功能替換每個R數據框列的前n個值

[英]Replacing the first n values of each R dataframe column according to function

我正在嘗試將“常規”數據集與受污染的數據集進行比較,但是我無法創建受污染的數據集

每個列表包含 25 個數據幀,每個數據幀對應一個大小 n; 每個數據幀包含 m=850 個大小為 n = {100, 200, ..., 2500} 的指數分布樣本

我嘗試為每個數據幀替換每個樣本的前 n/4 項。

我目前的做法是向受污染的數據幀添加額外的條目,這是我不想要的——我只想替換它們。 但是,如果我用 c(1:n/4) 切換 c(j),則會彈出一個錯誤,說替換有 25 行,數據有 100。

我還能做些什么更好?

set.seed(915)

n_lst <- seq(from = 100, to = 2500, by=100)

m_lst <- seq(from=1, to=850, by=1)

l = list()

lCont = list()

i=1

for (n in n_lst) {

l[[i]] = lCont[[i]] = data.frame(replicate(850, rexp(n, 0.73)))

for (j in m_lst) {

lCont[[i]][c(j), c(1:n/4)] = rexp(n/4, 0.01)
}
i <-i+1
}

下面是原始列表和污染列表(對於格式化問題,我在格式化驗證時遇到了麻煩)

原始清單污染清單

主要問題是您正在使用[columns, rows]進行索引,這是向后的。 R 將數據幀和矩陣索引為[rows, columns] 切換到lCont[[i]][1:(n / 4), j]將解決這個問題。

另請注意:在 R 的操作順序中較早出現,您需要1:(n / 4) ,而不是1:n / 4

最后一條評論, c()僅在您組合多個事物時才需要,例如c(1:5, 12) c(j)j的方法很長。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM