簡體   English   中英

基於來自 dataframe 的另一列,使用 rnorm function 創建新列

[英]Create new column based on another column from dataframe with rnorm function

我正在嘗試使用 rnorm function 中的列值並創建新的列綁定數據框。

> show(tablo)
      teta
1 14.67078
2 14.86293
3 15.54010
4 15.91335
5 16.05241
6 15.24349
7 15.01060
8 14.79570

每個 teta 值均以 rnorm function 表示。 首先我創建了 function

values <- function(x)
{
rnorm(1, x, 0.55)
}
values(tablo$teta) or attach(tablo) values(teta)

這個 function 只顯示一個值。

這很奇怪。

a <- 1:10

test <- function(x) {
    x +20
}

test(a)

此 function 顯示了 a 的所有新 a 值。

您應該在rnorm中使用length(x)而不是1 ,例如,

rnorm(length(x),x,0.55)

使用apply系列函數(例如sapply )function,因為您想在向量的每個元素上使用 function values 以下應該做的工作:

sapply(tablo$teta,values)
#[1] 14.88455 14.07981 15.19649 16.12940 16.42719 14.69165 14.27466 13.57540

您的test function 在不使用sapply的情況下工作,因為 R 中的+操作是矢量操作。 但是,它不適用於values function 因為在rnorm中,如果 n (第一個參數)為 1 (而在您的問題中將其作為向量傳遞),則平均值(即第二個參數)應該作為標量傳遞。

暫無
暫無

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

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