簡體   English   中英

R錯誤:參數暗示行數不同

[英]R error : arguments imply differing number of rows

因此,我嘗試使用for循環在數據幀的幾列上操作函數。

z <- function(x) gsub("[^\\.\\d]", "", x, perl = TRUE)
data <- cbind(data[1:2], for(i in seq(3, 9)) {y(data[[i]])})

我一直遇到該主題中提到的錯誤

arguments imply differing number of rows

我所有列中的行數都是相同的。

我試圖為此使用lapply,但是盡管它可以工作,但它會轉換將函數應用到factor的列類型。 這些列是數字值,但最初是從文件中讀取為字符的(它們以這種方式存儲)。 因此,當我嘗試使用lapply后轉換為數字時,會得到級別數作為輸出(例如1,2,3 ...)

歡迎使用for循環或lapply提供任何建議。 提前致謝。

> dput(head(data,3))
structure(list(MCF.Channel.Grouping = structure(c(6L, 6L, 6L), .Label = c("(Other)", 
"Direct", "Display", "Email", "Organic Search", "Paid Search", 
"Referral", "Social Network"), class = "factor"), Device.Category = structure(c(2L, 
1L, 3L), .Label = c("desktop", "mobile", "tablet"), class = "factor"), 
Spend = c("A$503,172.17", "A$375,940.43", "A$92,560.94"), 
Clicks = c("1,545,416", "1,037,740", "291,314"), Impressions = c("7,328,657", 
"3,787,612", "1,178,508"), Data.Driven.Conversions = c("1,697,814.32", 
"1,540,810.43", "430,738.63"), Data.Driven.CPA = c("A$0.30", 
"A$0.24", "A$0.21"), Data.Driven.Conversion.Value = c("A$12,815,842.66", 
"A$13,883,073.58", "A$3,804,800.15"), Data.Driven.ROAS = c("2547.01%", 
"3692.89%", "4110.59%")), .Names = c("MCF.Channel.Grouping", 
"Device.Category", "Spend", "Clicks", "Impressions", "Data.Driven.Conversions", 
"Data.Driven.CPA", "Data.Driven.Conversion.Value", "Data.Driven.ROAS"
), row.names = c(NA, 3L), class = "data.frame")

我們可以用

data[-(1:2)] <- lapply(data[-(1:2)], z)

該函數在不是第一列或第二列的列上運行。 輸出被分配給數據中的相同子集。

原始方法無效,因為for循環不會保存輸出。 通過嘗試將其另存為變量進行檢查:

x <- for(i in seq(3, 9)) {z(data[[i]])}
x
NULL

即使我們保存了循環的內容,也沒有捕獲任何內容。 然后運行循環,轉儲結果。 要查看循環如何工作,我們可以在以下范圍內分配值:

for ( i in 3:9) data[,i] <- z(data[,i])

暫無
暫無

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

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