С SparkR 1.4.1 a> при работе с фреймом данных структуры:
printSchema(dta)
root
|-- date: timestamp (nullable = true)
|-- valA: float (nullable = true)
|-- valB: float (nullable = true)
|-- ...
Я хочу преобразовать все существующие столбцы в строки, без явного обращения к каждому столбцу по имени.
Желаемый подход
Желаемый подход будет перебирать все столбцы:
# Quickly creating new data frame
dtaTmp <- select(dta, "date")
# Looping through each column of old data frame and adding string equivalent
# to a newly created data frame
for (i in seq_along(columns(dtaTmp))) {
print(i)
x <- cast(eval(parse(text = paste(sep = "$", "dtaTmp", columns(dtaTmp)[i]))),
"string")
dtaTmp <- withColumn(dtaTmp, (columns(dtaTmp)[i], x)
}
Это завершается с ошибкой: returnStatus == 0 is not TRUE
. По сути, я ищу решение, которое позволило бы мне запустить эквивалент sapply(mtcars, as.character)
в кадре данных SparkR.
Желаемые результаты
новый фрейм данных должен иметь структуру:
printSchema(desiredDta)
root
|-- date: string(nullable = true)
|-- valA: string(nullable = true)
|-- valB: string(nullable = true)
|-- ...