簡體   English   中英

如何簡化R中的代碼?

[英]How can I simplify my code in R?

我有以下來自R的丑陋代碼,我想簡化一下,使代碼更實用,占用更少的行。 一遍又一遍地運行相同的命令。

x$Avg..session.duration..seconds.<- 
as.numeric(x$Avg..session.duration..seconds.)
x$All.conv..value...cost<- as.numeric(x$All.conv..value...cost)
x$All.conv..value <- as.numeric(x$All.conv..value)
x$Interactions<- as.numeric(x$Interactions)
x$Views<- as.numeric(x$Views)
x$Total.cost<- as.numeric(x$Total.cost)
x$Avg..CPM<- as.numeric(x$Avg..CPM)
x$Cost<- as.numeric(x$Cost)
x$Impressions <- as.numeric(x$Impressions)
x$Clicks<- as.numeric(x$Clicks)
x$Bounce.rate <- as.numeric(x$Clicks)

謝謝

如果其中沒有任何因素:

x[] <- lapply(x, as.numeric))

如果確實有因素,則需要先使用as.character進行轉換:

x[] <- lapply(x, function(y) as.numeric(as.character(y)))

如果您不想就地轉換,則將lapply表達式包裝為as.data.frame

您將要遵循的一般模式是

  1. 確定需要更改的列。
  2. 使用lapply

如果只想轉換字符值,則可以使用

# Identify character values (all character values)
to_num <- vapply(X, is.character, logical(1))

X[to_num] <- lapply(X[to_num], as.numeric)

如果只有非常具體的字符值列表要轉換,則類似的方法將起作用。

to_num <- c("Avg..session.duration..seconds.",
            "All.conv..value...cost",
            "All.conv..value",
            "Interactions",
            "Views")
X[to_num] <- lapply(X[to_num], as.numeric)

如果您將各種特征和因素混合在一起,那么Matthew的答案將非常有效。

暫無
暫無

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

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