String 将数据帧传递给R-paste()时,R-paste()将作为.numeric()调用?
与数据帧的行和列选择相结合的RsString 将数据帧传递给R-paste()时,R-paste()将作为.numeric()调用?,string,r,numeric,paste,String,R,Numeric,Paste,与数据帧的行和列选择相结合的Rspaste-函数有一个特殊问题。似乎paste总是使用as.numeric()或类似的功能围绕其输入参数 以下是我所做工作的代码片段: paste(df[1, c("entry1", "entry2")], collapse="; ") 这将传递数据帧df的第一行,其中列“entry1”和“entry2”具有列条目。我假设输出如下: "Auffuellung; Holozaen" 相反,我接收传递的数据帧项的串联数字等价物(不是索引): "1; 5" 在我的
paste
-函数有一个特殊问题。似乎paste
总是使用as.numeric()
或类似的功能围绕其输入参数
以下是我所做工作的代码片段:
paste(df[1, c("entry1", "entry2")], collapse="; ")
这将传递数据帧df
的第一行,其中列“entry1”
和“entry2”
具有列条目。我假设输出如下:
"Auffuellung; Holozaen"
相反,我接收传递的数据帧项的串联数字等价物(不是索引):
"1; 5"
在我的真实数据库上调用str(df[1,c(“entry1”,“entry2”)))
会产生以下输出(德语,不足为奇;):
在这种情况下,我做错了什么?到目前为止,我从未遇到过粘贴函数的问题,我也从未想过会发生这样的事情那么,如何解决这个问题并获得正确的串联字符串输出,而不是串联数字等价物?
提前谢谢你 您的问题与您的数据是
因子
变量这一事实有关<代码>粘贴正在粘贴基础的“整数”
代码。这是令人困惑的,而且对于如何避开它,也不是很明显。您需要使用unlist()
将它转换为一个向量,它将像execpcted一样工作
例子
df对不起,我没有早点描述它。它是数据框的第一行,包含两列条目。@SimonO101我添加了str
-输出问题帖子。@SimonO101,我的预期输出是粘贴后的“Auffuellung;Holozaen”。也许解决方案是以某种方式提取隐藏在dataframe内部的、以某种方式排序的枚举后面的字符串值。我刚刚发现,read.csv
-函数中有一个stringsAsFactors
-参数。默认设置为stringsAsFactors=default.stringsAsFactors()
。在我的例子中,它应该是stringsAsFactors=FALSE
。这绝对解决了任何问题。请将此添加到您的答案中,我将接受正确的答案。
'data.frame': 1 obs. of 2 variables:
$ Hauptbestandteile: Factor w/ 38 levels "Auffuellung",..: 1
$ Chronografie : Factor w/ 18 levels "Devon","Famennium",..: 5
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"