【发布时间】:2019-09-23 03:02:32
【问题描述】:
所以我有一个相对简单的问题(我认为我的问题可能有一些重复)但我似乎无法弄清楚,我真的很感激任何和所有的帮助。
我有一个数据集,在一列中,我有多行不同的 11 位数字。我希望获得每个数字的最后 6 位数字,并希望能够在我的数据集中创建一个带有结果的新列。
下面是一个例子:
random_num <- c(11001100100, 11001100300, 11001100400,
11001100501, 11001100502, 11001100600)
random_stuff <- c(2, 5, 6, 2, 5, 3)
data_frame <- cbind(random_num, random_stuff)
我希望得到这样的输出:
到目前为止,这就是我所拥有的:
conversion <- function (x) {
for (i in nrow(x))
{
c <- as.character[i]
be <- substring(c, seq(1, nchar(c), 1), seq(1, nchar(c), 1))
ad <- paste(be[6], be[7], be[8], be[9], be[10], be[11], sep = "")
final <- as.numeric(ad)
return(final)
}
}
finalr <- conversion(data_frame)
finalr
但我要么收到错误消息,说明
'as.character[i] 中的错误:'builtin' 类型的对象不是可子集的'或'mutate_impl(.data,dots) 中的错误:评估错误:'to' 的长度必须为 1。'
非常感谢任何建议。谢谢!
【问题讨论】:
-
as.character是一个函数。您正在尝试使用该功能提取一些东西([ -
您的样本数据与截图不符。
-
您显示的是矩阵而不是 data.frame。此外,
substring/substr是矢量化的,因此无需循环,即substr(as.character(data_frame[,1]), nchar(data_frame[,1])-6, nchar(data_frame[,1])) -
这样的事情会起作用
substring(df[, 1], nchar(df[, 1]) - 5)