如何在 r 中的列上使用摘要库

How to use the digest library on a column in r

我在使用这个时遇到错误:

for (i in nrow(df$uuid)){df$uuid[[,i]] <- (digest(df$uuid[i,], algo=c("sha256")))}

Error in 1:nrow(s12$uuid) : argument of length 0

向量没有 nrow 值,只有 length 值:

x <- 1:10
nrow(x)
#> NULL

这包括包含在数据框中的向量:

df <- data.frame(x = 1:10)
nrow(df$x)
#> NULL

而数据框本身有一个nrow(行数)一个length(列数):

nrow(df)
#> [1] 10
length(df)
#> [1] 1

迭代时您需要小心,您正在沿着正确实体的正确“维度”进行迭代。在你的情况下,这意味着你应该给 for 循环你的数据帧 其向量之一的 length (两者将是相同的),但 不是 其向量之一的 nrow,因为那将是 NULL.

不清楚 len 在您的示例中的作用 - 这是您拥有的功能 pre-defined 吗?它只是 nrow 的同义词吗?

你的问题中没有显示你的数据结构,所以让我们举一个非常简单的例子。我们将为“数据”创建一个 uuid 列,并为散列创建一个空列。

df <- data.frame(uuid = c("hello", "world"))
df$hash <- character(nrow(df))

为了填充散列列,我们这样做:

for(i in 1:nrow(df)) df$hash[i] <- digest::digest(df$uuid[i], algo = "sha256")

这导致:

#>   uuid                                                              hash
#> 1 hello 5d3c36bc8d42c8b679ba1ef4ef3c2bf7674fc42ae33a474b9ac1a032a24b9b1d
#> 2 world c2269227fa81bc9731bedddfe41594c00e3be9327e33339053ebc395adb4fa76