R - paste()在将数据帧传递给它时调用as.numeric()吗?

时间:2013-11-08 10:45:05

标签: string r numeric paste

我对 Rs paste - 函数与数据框的行和颜色选择结合有特殊问题。似乎 paste始终围绕着as.numeric() 的输入参数或类似工作的东西。

以下是我正在做的代码片段:

paste(df[1, c("entry1", "entry2")], collapse="; ")

这会传递数据框df的第一行,其中包含列"entry1""entry2"的列条目。我假设输出如下:

"Auffuellung; Holozaen"

相反,我收到传递的数据帧条目的连续数字等价物(而不是索引):

"1; 5"

在我的真实数据库上调用str(df[1, c("entry1", "entry2")])会产生以下输出(德语,不要怀疑;)):

'data.frame':   1 obs. of  2 variables:
 $ Hauptbestandteile: Factor w/ 38 levels "Auffuellung",..: 1
 $ Chronografie     : Factor w/ 18 levels "Devon","Famennium",..: 5

在这种情况下我做错了什么?到目前为止,我从来没有遇到paste - 函数这样的问题,我从来没有想到会发生这样的事情。 那么,我该如何解决问题并获得串联字符串的正确输出而不是连续数字等价?

提前谢谢!

1 个答案:

答案 0 :(得分:4)

您的问题与您的数据是factor个变量有关。 paste正在粘贴基础"integer"代码。这是令人困惑的,并没有立即明白如何解决它。你需要使用unlist()将它变成一个向量,它将像exepcted一样工作......

实施例

df <- data.frame( Month = factor(month.name) , Short = factor(month.abb) )
df[ 1 , ]
#    Month Short
#1 January   Jan

paste( df[ 1 , ] , collapse = "; " )
#[1] "5; 5"

paste( unlist( df[ 1 , ] ) , collapse = "; " )
#[1] "January; Jan"

当然,在您阅读数据时,可以避免使用stringsAsFactors = FALSE read.*参数自动将字符串转换为因子。

有关此问题的讨论,请参阅R room chat log here